在 WordPress 网站中实现分类文章排序及控制文章数量分页,可以通过以下几种方法达成,下面将详细介绍。

1. 使用 WP_Query 自定义查询


在主题的模板文件(如category.php)中,你可以使用WP_Query类来实现分类文章的排序和分页。以下是示例代码:
收起
php
<?php
// 获取当前分类的 ID
$cat_id = get_query_var('cat');

// 设置查询参数
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'category__in' => $cat_id, // 只显示当前分类的文章
    'posts_per_page' => 5, // 每页显示的文章数量
    'paged' => $paged, // 当前页码
    'orderby' => 'date', // 排序依据,这里按日期排序
    'order' => 'DESC' // 排序顺序,DESC 为降序,即最新文章在前
);

// 创建 WP_Query 对象
$query = new WP_Query($args);

// 检查是否有文章
if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post();
        // 显示文章标题
        echo '<h2><a href="'. get_permalink(). '">'. get_the_title(). '</a></h2>';
        // 显示文章摘要
        the_excerpt();
    endwhile;

    // 分页导航
    the_posts_pagination(array(
        'mid_size' => 2,
        'prev_text' => __('« 上一页'),
        'next_text' => __('下一页 »'),
    ));

    // 重置文章数据
    wp_reset_postdata();
else :
    // 若没有文章,显示提示信息
    echo '<p>该分类下没有文章。</p>';
endif;
?>

代码解释:

 
  • category__in:指定要显示文章的分类 ID。
  • posts_per_page:设置每页显示的文章数量。
  • paged:获取当前页码。
  • orderby:定义排序依据,可取值包括date(按日期)、title(按标题)、rand(随机)等。
  • order:设置排序顺序,ASC为升序,DESC为降序。
  • the_posts_pagination():用于显示分页导航。

2. 修改主查询


如果你不想创建自定义查询,也可以通过pre_get_posts钩子来修改主查询,从而实现分类文章的排序和分页。在主题的functions.php文件中添加以下代码:
收起
php
function custom_category_query($query) {
    if ($query->is_category() && $query->is_main_query()) {
        $query->set('posts_per_page', 5); // 每页显示的文章数量
        $query->set('orderby', 'date'); // 排序依据
        $query->set('order', 'DESC'); // 排序顺序
    }
}
add_action('pre_get_posts', 'custom_category_query');

代码解释:

 
  • is_category():判断当前是否为分类页面。
  • is_main_query():确保只修改主查询。
  • set():用于设置查询参数。

3. 使用插件实现


如果你不想编写代码,也可以使用插件来实现分类文章的排序和分页,例如 “WP-PageNavi” 插件,它可以方便地自定义分页样式。操作步骤如下:
  1. 安装并激活插件:登录 WordPress 后台,导航到 “插件” -> “添加新插件”,搜索 “WP-PageNavi”,点击 “安装现在”,然后激活插件。
  2. 显示分页导航:在主题的模板文件(如category.php)中,在需要显示分页导航的位置添加以下代码:

收起
php
if (function_exists('wp_pagenavi')) {
    wp_pagenavi();
}

通过以上方法,你可以在 WordPress 网站中实现分类文章的排序和控制文章数量分页。