分页在多个类别上不起作用

时间:2014-06-19 作者:Interactive

我有以下问题。在我的自定义菜单中(wp_nav_menu) 我添加了一个类别。此类别使用模板category.php.现在我在页面上显示了多个类别。我的问题是分页不起作用。它显示除第2页外的所有链接/显示“未找到页面”页面。

我不知道我做错了什么。

查看我的代码:

<?php
        $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; // allow for pagination
        $getcat = query_posts(\'category_name=array("cat1", "cat2", "cat3","cat4","cat5","cat6")\'); 
        $args = array (
            $getcat,
            \'posts_per_page\' => 5,
            \'paged\' => $paged
        );
        query_posts($args);
    ?>
    <?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
            <h1><?php the_title(); ?></h1>
            <div class="some_class"><?php the_excerpt(); ?></div>
    <?php endwhile; ?>
        </div>
            <div class="pagination">
                <div class="ex_previous"><?php previous_posts_link(\'&laquo; recent\', 0); ?></div>
                <div class="ex_next"><?php next_posts_link(\'older &raquo;\', 0); ?></div>
            </div>
    <?php else : ?>
    <?php endif; ?> 
希望有人能告诉我哪里出错了

M

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

您的查询有一些问题。我会一边解释

首先,你不应该使用query_posts 构造自定义查询。这不仅是我的重点,也是抄本。最大的问题是query_posts 在许多情况下,分页都会失败

Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。

其次,您使用的参数category_name 除了字符串,而不是数组。

第三,您运行了两次query_posts 实际上只需要一个。这也是分页右侧失败的原因

第四,你的next_posts_link $max_pages 应为自定义查询设置参数,否则将失败

好的,为了完成业务,您需要使用WP_Query, 记住我上面提到的一些要点。

<?php
    $paged = (get_query_var(\'paged\')) ?  get_query_var(\'paged\') : 1; // this section is correct, allows pagination

 $args = array( //set-up arguments to pass to WP_Query
    \'category_name\' => \'string of category slugs, not name\', // can use \'cat\' parameter with string of category ID
    \'posts_per_page\' => 5,
    \'paged\' = $paged
  );

$query = new WP_Query( $args); //add arguments back to WP_Query

if($query->have_posts()) :  while($query->have_posts()) : $query->the_post(); //start the loop
  <-----YOUR LOOP---->
 endwhile;
  <----YOUR PAGINATION---->
     Remember next_posts_link should look something like \'next_posts_link( \'Older Entries\', $query->max_num_pages );\'
wp_reset_postdata();
 endif;

结束

相关推荐

从WP_LIST_CATEGORIES中删除‘Category’一词

我有以下代码:wp_list_categories();它输出我的所有类别,但是,它使它们成为列表元素的子元素,称为CATEGORIES.所以,我得到了一个无序的列表,如下所示:CATEGORIES * FASHION * DAILY FASHION CANDY * TRENDS * BEAUTY * ACCESSORIES * CELEBRITIES * LIFESTYLE 但是,我只需要:* FASHION * DAILY FA