wordpress orderby = rand not working

Jac*_*nkr 0 wordpress

$hpPromo = new WP_Query(array('post_type' => 'homepage_promo', 'orderby' => 'rand'));
print_r($hpPromo->posts);
Run Code Online (Sandbox Code Playgroud)

每次array都是完全相同的订单.为什么我的帖子没有随机化?是因为我使用的是自定义 post_type吗?请指教.

**编辑**

与此同时,我这是我知道如何(效率低下)的唯一方式.无论如何,请发布一个比这个更好的答案(为了各地的开发人员!)

$hpPromo = new WP_Query(array('post_type' => 'homepage_promo', 'orderby' => 'rand'));
$count = count($hpPromo->posts);
$posts = (array)$hpPromo->posts;
$promo_id = $posts[rand(0, $count-1)]->ID;
wp_reset_query();
$hpPromo = new WP_Query(array('post_type' => 'homepage_promo', 'p' => $promo_id));
$hpPromo->the_post();
the_content();
Run Code Online (Sandbox Code Playgroud)

Ami*_*Deo 10

尝试删除可能干扰orderby查询的过滤器.

remove_all_filters('posts_orderby');
$hpPromo = new WP_Query(array('post_type' => 'homepage_promo', 'orderby' => 'rand'));
print_r($hpPromo->posts);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢杰克.您一直在使用的插件可能在此过滤器上添加了挂钩.很高兴它有效. (2认同)