You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改代码仅对特定分类实现随机文章分页无重复

解决方案

你只需要在原有排序修改逻辑前增加查询条件校验,仅在命中你指定的分类时才应用随机排序规则即可,修改后的完整代码如下:

session_start();

// 新增第二个参数$wp_query用来获取当前查询信息
add_filter('posts_orderby', 'edit_posts_orderby', 10, 2);
function edit_posts_orderby($orderby_statement, $wp_query) {
    // 这里替换为你要生效的分类ID,多个分类用数组格式比如 [3,5,7]
    $target_category_ids = [2];
    // 也可以用分类别名判断,对应下方判断改为is_category(['news','cases'])即可

    // 校验规则:仅主查询 + 指定分类存档页 才触发随机排序
    if (!$wp_query->is_main_query() || !is_category($target_category_ids)) {
        // 不符合条件直接返回原有排序规则
        return $orderby_statement;
    }

    $seed = $_SESSION['seed'];
    if (empty($seed)) {
      $seed = rand();
      $_SESSION['seed'] = $seed;
    }

    $orderby_statement = 'RAND('.$seed.')';
    return $orderby_statement;
}
  • 你需要把$target_category_ids的值替换为你需要生效的分类ID,后台编辑分类时浏览器地址栏的tag_ID参数值就是分类ID
  • 如果需要对多个分类生效,直接在数组里增加对应ID即可
  • 如果需要让这个随机规则同时对分类页内的子分类也生效,可以把is_category判断替换为in_category($target_category_ids, $wp_query->post)

内容的提问来源于stack exchange,提问作者Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:57:00