Php 随机排序结果不在pre_get_post中工作

Php 随机排序结果不在pre_get_post中工作,php,wordpress,custom-wordpress-pages,Php,Wordpress,Custom Wordpress Pages,我在WordPress工作,我尝试随机订购产品结果。就像每次客户刷新页面一样,产品应该随机显示。目前无论我刷新页面多少次 每次产品都以相同的顺序显示。第一个产品将是第一个,最后一个将是最后一个 我正在写这个问题 add_action( 'pre_get_posts', 'rand_products'); function rand_products( $query) { //if ( ! is_admin() && $query->is_main_query

我在WordPress工作,我尝试随机订购产品结果。就像每次客户刷新页面一样,产品应该随机显示。目前无论我刷新页面多少次

每次产品都以相同的顺序显示。第一个产品将是第一个,最后一个将是最后一个

我正在写这个问题

add_action( 'pre_get_posts', 'rand_products');

function rand_products( $query) {
  
    //if ( ! is_admin() && $query->is_main_query() ) {
        $query->query['orderby'] = 'rand';
        $query->query['order'] = 'rand';
        $query->set( 'orderby', 'rand');
        $query->set( 'order', 'rand' );
    /}
}
如果我看到查询转储(附在屏幕截图中),那么我可以看到查询参数已经更改,但仍然不起作用。谁能帮忙吗


故障排除可能是因为您正在为
顺序
参数使用未定义的值

根据
WP\u查询
order和order by参数:

参数 价值观
顺序(字符串|数组)
-指定“orderby”参数的升序或降序。默认为
DESC
。一个数组可用于多个order/orderby集合。
ASC
-从最低值到最高值(1、2、3;a、b、c)的升序。
DESC
-从最高值到最低值(3、2、1;c、b、a)的降序顺序。
orderby(字符串|数组)
-按参数对检索到的帖子进行排序。默认为
日期(发布日期)
。可以传递一个或多个选项。
rand
-随机顺序。
你的代码工作正常。我在本地登记了。 对此我有一个建议,任何使用过的主题或安装的插件都可能与此代码冲突。 增加优先级

add_action( 'pre_get_posts','pre_get_posts', 999 );

默认优先级永远不需要更改。这被认为是不好的做法。@TeamDolphin我增加了优先权,但不工作仍然不工作。