自己魔改主题页面总会遇到一些问题,分页问题算一个比较常见的。

传统的自定义页面输出文章的代码是:

<?php query_posts();if (have_posts()) : while (have_posts()) : the_post(); ?>

 

这正是造成自定义页面无法分页关键因素,如果要实现分页,这段代码是有bug的,所以我们应该替换成:

<?php 
    $limit = get_option('posts_per_page');
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts();if (have_posts()) : while (have_posts()) : the_post(); 
?>

 

按照这种输出格式就能完美解决自定义页面分页功能了,但是实际的自定义页面是有参数设置的,所以带参数的代码我拿个例子来说一下,比如:

<?php 
    query_posts("post_type=shuoshuo&post_status=publish&posts_per_page=100");
    if (have_posts()) : while (have_posts()) : the_post(); 
?>

 

则正确地能分页的代码是:

<?php 
    $limit = get_option('posts_per_page');
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts('post_type=post&post_status=publish&showposts=' . $limit . '&paged=' . $paged);
    if (have_posts()) : while (have_posts()) : the_post(); 
?>

 

到此为止并没有结束,自定义页面要分页肯定要分页代码函数,所以要在自定义页面中调用分页函数,如果不知道自己的主题的分页函数是什么,可以到index.php里面查看。

例如本站主题的分页函数:

<div class="page_nav">
	<?php
		if ( null !== get_next_posts_link() ) :
	?>
	<div class="previous navbutton">
		<?php next_posts_link( '<i class="fa fa-angle-double-left"></i>' . __( 'Previous Lives', 'blackoot-lite' ) ); ?>
	</div>
	<?php
		endif;
		if ( null !== get_previous_posts_link() ) :
	?>
	<div class="next navbutton">
		<?php previous_posts_link( __( 'Next Lives', 'blackoot-lite' ) . '<i class="fa fa-angle-double-right"></i>' ); ?>
	</div>
	<?php
		endif;
	?>
</div>

 

参考:秋夜博客

解决WordPress自定义页面分页问题
https://ailitonia.com/archives/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%ae%9a%e4%b9%89%e9%a1%b5%e9%9d%a2%e5%88%86%e9%a1%b5%e9%97%ae%e9%a2%98/
本文被阅读了:4,950次
作者
Ailitonia
发布于
2018年3月3日
许可协议
版权声明

作者头像
关于 @Ailitonia
正因站在了巨人的肩膀上,才越发觉得自己渺小。不求成为巨人,但求与其同行。 把自己所见所闻,记录下来。
→查看所有由Ailitonia发布的文章