• 默认设置

    • 在WordPress后台的“设置” -> “阅读” -> “博客页面至多显示”中设置每页显示的文章数量,但这是全局设置,所有分类都会使用这个值。
  • 自定义设置

    • 使用pre_get_posts钩子来动态设置不同分类的每页文章数量。
  • 代码示例

    // 不同分类调用不同的分页显示数量
    function tx_wp_filter_pre_get_posts($query) {
      if ($query->is_main_query()) { // 判断是否为主查询
        $num = '';
        if (is_category()) { // 判断是否为分类
          $cat_ID = get_queried_object_id(); // 获取分类ID
          if (get_option('cat-pagenum-' . $cat_ID)) { // 判断分类自定义字段是否有值
            $num = get_option('cat-pagenum-' . $cat_ID);
            $query->set('posts_per_page', $num); // 给主循环数据里面的每页文章数量赋值
          }
        }
      }
      return $query;
    }
    add_action('pre_get_posts', 'tx_wp_filter_pre_get_posts'); // 挂上钩子
  • 简化版代码

    // 不同分类调用不同的分页显示数量
    function tx_wp_filter_pre_get_posts($query) {
      if ($query->is_main_query()) { // 判断是否为主查询
        $num = '';
        if (is_category(array(1))) { // 数字1为指定分类ID
          $num = 2; // 数字2为每页文章数量值,可以任意修改但必须是整数
          $query->set('posts_per_page', $num); // 给主循环数据里面的每页文章数量赋值
        }
      }
      return $query;
    }
    add_action('pre_get_posts', 'tx_wp_filter_pre_get_posts'); // 挂上钩子