query_post /第2页-3页上的相同帖子

时间:2014-06-05 19:10:08

标签: wordpress pagination blogs

我有一个自定义主题,我已经向主题创建者寻求帮助,但在等待答案时(他们需要永远)我想我也会在这里发帖

我的博客在第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('&larr; '.'Older posts', 'mythemeshop' );
previous_posts_link('Newer posts'.' &rarr;', 'mythemeshop' );
}
?>

</ul>

博客地址为:http://absolutept.com/blog/

任何人都有关于这样写的方式是否有问题的建议,如果是,应该如何阅读?

1 个答案:

答案 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('&larr; '.'Older posts', $the_query->max_num_pages );