我有此自定义查询:
if (isset($_COOKIE[\'myCookie\']) && $_COOKIE[\'myCookie\'] == $f_r) {
$args = array(
\'posts_per_page\' => 4,
\'nopaging\' => false,
\'order\' => \'ASC\',
\'orderby\' => \'rand\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'Count\',
\'field\' => \'slug\',
\'terms\' => $f_r,
)
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
<a href="<?php the_field(\'the_link\'); ?> ">
<img src="<?php echo the_field(\'the_img\'); ?>" />
</a>
} else {
echo \'Oops! Something went wrong!\';
}
wp_reset_postdata();
查询可以工作,但不会重置数据。每次访问者登陆查询所在的页面时,都会显示与往常完全相同的4篇帖子。
这段代码在我的本地环境中运行得很好(每次运行时都会获取不同的帖子),但在实时服务器上,它似乎“固定”为4篇特定帖子。
我不明白为什么会这样,所以我真的需要一些建议。谢谢
附:这不是插件或主题,因为它在本地环境中工作良好。
SO网友:Pabamato
如果在服务器级别禁用order by RAND,您可以尝试手动执行RAND,方法是先运行查询并获取ID,然后从结果中运行新查询,包括x个随机帖子ID:
$get_all_args = array(
\'fields\' => \'ids\',
\'posts_per_page\' => 99,
\'order\' => \'DESC\',
\'orderby\' => \'modified\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'Count\',
\'field\' => \'slug\',
\'terms\' => $f_r,
)
)
);
$query_all = new WP_Query( $get_all_args );
// additional code and checks
// ...
// ...
wp_reset_postdata();
$args = array(
\'post__in \' => array_rand(array_flip( $query_all ), 4)
);
$query = new WP_Query( $get_all_args );
// additional code and checks
// ...
// ...
wp_reset_postdata();
你将从最新修改的帖子中随机获得4篇帖子,注意我没有使用
\'posts_per_page\'=> -1
因为这不是一个好的做法,可能会损害您的网站速度