自己魔改主题页面总会遇到一些问题,分页问题算一个比较常见的。
传统的自定义页面输出文章的代码是:
<?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次