[英]WordPress keeping posts per page value when paginating
我有一个选择,允许用户选择博客列表页面上显示的帖子数量。 目前,select自动提交了表单,并且针对重新加载的页面查询更新了posts_per_page值。
global $query_string;
if(isset($_REQUEST['set_posts_per_page']))
$ppp = $_REQUEST['set_posts_per_page'];
else
$ppp = 12;
query_posts("{$query_string}&posts_per_page=".$ppp);
当前使用标准WordPress函数生成分页按钮:
previous_posts_link( '<span class="etc"></span>' );
next_posts_link('<span class="etc"></span>' );
重做这项工作的最佳方法是什么,以便用户可以使用分页和posts_per_page选项?
像这样的几页列出了不同的自定义帖子类型,它们必须以相同的方式工作(如果有所不同)。
请找到以下代码以获取博客。
<?php
$queryObject = new WP_Query( 'post_type=blog&posts_per_page=5' );
// The Loop!
if ($queryObject->have_posts()) {
?>
<ul>
<?php
while ($queryObject->have_posts()) {
$queryObject->the_post();
?>
如果您想在添加wp-pagination插件页面上添加分页,请使其易于使用。
只需添加
<?php echo wp_paginate(); ?>
我希望这能帮到您。
谢谢
<?php
// the query to set the posts per page to 5
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('posts_per_page' => 5, 'paged' => $paged );
query_posts($args); ?>
<!-- the loop -->
<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
<!-- rest of the loop -->
<!-- the title, the content etc.. -->
<?php endwhile; ?>
<!-- pagination -->
<?php next_posts_link(); ?>
<?php previous_posts_link(); ?>
<?php else : ?>
<!-- No posts found -->
<?php endif; ?>
这就是我最终要做的。 唯一的缺点是现在它在URL中添加了一个get变量,但这并不是世界末日。
在这里,我完全替换了next_posts_link()和previous_posts_link(),而是添加了自定义代码。 它们使用get_previous_posts_page_link()和get_next_posts_page_link()获取分页功能通常会获得的URL,检查set_posts_per_page REQUEST参数并将其添加到分页URL上。
然后,我手动构建导航按钮,并使用get参数输入URL。 strtok函数通过每次剥离它来阻止此get参数在URL中堆积。
<?php global $wp_query;
$current_page = $wp_query->get( 'paged' );
/* Previous link */
$prev_url = strtok(get_previous_posts_page_link(), '?');
if($prev_url && $current_page!=1 && $_REQUEST['set_posts_per_page']!='')
$prev_url.="?set_posts_per_page=".$_REQUEST['set_posts_per_page'];
if($prev_url && $current_page!=1) : ?>
<a href="<?=$prev_url; ?>">
<span class="navbuttons__btn navbuttons__btn--next btn btn--ui" rel="next">
<i class="fa fa-arrow-left"></i>
</span>
</a>
<?php endif;
/* Next link */
$next_url = strtok(get_next_posts_page_link(), '?');
if($next_url && $current_page!=$wp_query->max_num_pages && $_REQUEST['set_posts_per_page']!='')
$next_url.="?set_posts_per_page=".$_REQUEST['set_posts_per_page'];
if($next_url && $current_page!=$wp_query->max_num_pages) : ?>
<a href="<?=$next_url; ?>">
<span class="navbuttons__btn navbuttons__btn--next btn btn--ui" rel="next">
<i class="fa fa-arrow-right"></i>
</span>
</a>
<?php endif; ?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.