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

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

<?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>

 

参考:秋夜博客


本文被阅读了:3,318次

作者头像
关于  Ailitonia

正因站在了巨人的肩膀上,才越发觉得自己渺小。不求成为巨人,但求与其同行。 把自己所见所闻,记录下来。

→查看所有由Ailitonia发布的文章