我有一个自定义主题,我已经向主题创建者寻求帮助,但在等待答案时(他们需要永远)我想我也会在这里发帖
我的博客在第2页和第3页上显示与第1页相同的帖子。
我在我的page-blog.php模板上找到了这段代码
query_posts($args);
while (have_posts()) {
the_post();
并缩小页面:
<ul class="pagination">
<?php
if ($paginar == '1') {
gym_pagination();
}
else
{
next_posts_link('← '.'Older posts', 'mythemeshop' );
previous_posts_link('Newer posts'.' →', 'mythemeshop' );
}
?>
</ul>
博客地址为:http://absolutept.com/blog/
任何人都有关于这样写的方式是否有问题的建议,如果是,应该如何阅读?
答案 0 :(得分:0)
该主题创建者应该更好地了解使用query_posts
。直接从食品法典
注意:此功能不适用于插件或主题。如后面所述,有更好的,更高性能的选项来改变主查询。 query_posts()是一种过于简单化和有问题的方法来修改页面的主要查询,方法是用新的查询实例替换它。它是低效的(重新运行SQL查询)并且在某些情况下会彻底失败(特别是在处理帖子分页时)。
正确的方法是使用WP_Query
您的查询应该是这样的
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$args = array(
'paged' => $paged,
<--rest of your arguments-->
);
$the_query = new WP_Query( $args);
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
<-----Your Loop---->
}
/* Restore original Post Data */
wp_reset_postdata();
要使分页正常工作,您需要通过添加next_posts_link( $label , $max_pages );
参数来修改$max_pages
链接。所以你的next_posts_link( $label , $max_pages );
应该是这样的
next_posts_link('← '.'Older posts', $the_query->max_num_pages );