在使用 WordPress 搭建博客时,有时需要让不同的分类页面显示不同篇数的文章,通过设置项”博客页面至多显示x篇文章”只能设置为显示相同的篇数。虽然可以通过修改 query_string 来实现,但如果使用了 WP-PageNavi 等分页插件,还是会出现一些问题,这种情况下,可以借助 pre_get_posts 来实现我们的需求。 通过修改 query_string 可以实现显示指定篇数: global $query_string; $posts = query_posts($query_string.'&posts_per_page=10'); while ( have_posts() ) { // ... } 但如果使用了 WP-PageNavi 等分页插件,通常会导致的一个问题是:分页数量是正确的,但访问后面的页数时,会提示 404 错误。如果要对插件进行修改,那会非常麻烦,而借助 WordPress 的 hooks/action – pre_get_posts ,不同分类页面显示不同篇数文章的实现就简单多了: function powerxing_custom_posts_per_page( $query ) { // 为特定分类指定显示数量,键为分类别名(可在后台的分类目录中查看),值为显示数量 $ppp = array( // 比如为分类 notes 和 gallery 设置不同的显示数量 'notes' => 10, 'gallery' => 15, ); if ( $query->is_category() && $query->is_main_query() ) { // 获取当前分类别名 $slug = $query->query_vars['category_name']; if ( array_key_exists($slug, $ppp) ) { $query->set( 'posts_per_page', $ppp[$slug] ); } } } add_action('pre_get_posts', 'powerxing_custom_posts_per_page'); 只需要将上面的代码复制到主题下的 functions.php 中,修改 $ppp 数组为你想要的设置就行了。 (责任编辑:好模板) |