404在分页时未找到错误

时间:2013-09-23 作者:IFightCode

正常的帖子(不是自定义的帖子类型),我做了我应该做的一切,但404没有发现分页错误。这是我的密码

$category_id = get_query_var(\'cat\'); //Using this to get category ID to meet some special requirements
        $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

        $args = array(
            \'posts_per_page\' => 4,
            \'numberposts\'    => 50,
            \'paged\' => $paged,
            \'cat\' => $category_id
        );

        query_posts($args);
        if ( have_posts() ) : while ( have_posts() ) : the_post(); 
        $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'single-post-thumbnail\' );
        ?>
        <div id="post-item">
        <div class="thumb"><img src="<?php echo get_stylesheet_directory_uri(); ?>/timthumb.php?src=<?php echo $image[0]; ?>&w=224&h=224&zc=1" /></div>

        <div class="detail">
            <h2 class="wrtitle"><span class="blue"><?php  $category = get_the_category(); echo $category[0]->cat_name; ?> : </span><?php the_title(); ?></h2>
            <div class="date"><?php the_date(); ?></div>
            <div class="excerpt"><?php the_excerpt(); ?></div>
        </div>
        <div class="rmore"><a href="<?php the_permalink(); ?>"><img src="<?php echo get_stylesheet_directory_uri(); ?>/images/readmore.png" /></a></div>
        </div>
        <?php endwhile; 
        wp_reset_postdata();
        else: ?>
     <p><?php _e(\'No posts found\'); ?></p>

    <?php endif; ?>

    <!-- Pagination Part -->
    <div id="pagination">
        <div class="next"><?php next_posts_link(\'next &raquo;\') ?></div>
        <div class="prev"><?php previous_posts_link(\'&laquo; previous\') ?></div>
    </div>
我需要你的建议。

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

将代码放入模板文件中category.php.

删除循环之前的所有部分:一旦进入类别模板,就不需要获取类别、页面、再次运行查询query_posts...

所以你的category.php 应该这样简单地显示:

if ( have_posts() ) : while ( have_posts() ) : the_post(); 
  $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), \'single-post-thumbnail\' );
?>

... post markup here

<?php endwhile; 

else: ?>

<p><?php _e(\'No posts found\'); ?></p>

<?php endif; ?>

<!-- Pagination Part -->
<div id="pagination">
  <div class="next"><?php next_posts_link(\'next &raquo;\') ?></div>
  <div class="prev"><?php previous_posts_link(\'&laquo; previous\') ?></div>
</div>
要强制该模板每页仅显示4个FOST,请在functions.php 使用:

add_action(\'pre_get_posts\',\'four_post_per_cat\');

function four_post_per_cat( $query ) {
  if ( ! is_admin() && is_main_query() && is_category() ) {
    $query->set(\'posts_per_page\', 4);
  }
}
在那之后numberpostsposts_per_page 是同义词,但是numberposts 已弃用。为它们设置不同的值使numberposts 什么都不做(或posts_per_page 什么都不做,我不记得了。。。但是,请使用其中之一)。

如果您的范围限制了达到的帖子总数(在所有页面中),请使用post_limit 过滤器,英寸functions.php 还添加:

add_filter( \'post_limits\', \'cat_post_limits\' );

function cat_post_limits( limit ) {
    return ( is_category() ) ? \'LIMIT 0, 50\' : $limit;
}
遵循我的建议,不仅可以解决问题,还可以提高性能:因为query_posts 性能非常差:永远不要使用它。

<小时>A note: 如果添加了任何重写规则,请确保刷新规则。在仪表板中,转到“设置”->“永久链接”,然后单击“保存更改”。

PS:如果你最多得到50篇帖子,50不能被4整除,所以最后一页将有2篇帖子。。为什么不将限制设置为52或48

结束

相关推荐

How to use/enable Pagination?

我正在创建一个快捷码,以显示WordPress中具有特定配置文件的用户列表。但我无法启用或显示分页。我的网站上有25个用户,希望每页显示5个配置文件用户,并包括分页。我为学生档案添加了一个新角色student和多个使用高级自定义字段的自定义字段。因此,我需要显示一个学生列表作为适当的字段。到目前为止,问题是我无法启用的分页。下面是我的代码示例:add_shortcode(\'list-users\', \'list_users\'); function list_users($atts)