您试图检索一组帖子,并以随机顺序显示它们。
首先:
缩进您的代码以防止bug,当代码读取时,会有一个结尾endif;
在您的问题代码中,但没有打开if语句。如果您已经正确缩进,这将是微不足道的,好的编辑器会自动为您缩进$do_not_duplicate
未定义在任何情况下均不得使用query_post
. 任何网站或个人告诉您使用它的方式都是错误的,它会助长导致常见且容易避免的问题的不良做法,例如分页问题如果您试图用随机排序的不同帖子列表替换页面上列出的帖子,那么您应该使用pre_get_posts
筛选以修改主查询,而不是将其丢弃并放置新查询以浪费时间。
如果您试图在侧边栏或帖子末尾添加帖子列表,请使用WP_Query
, e、 g.:
$parameters = array( ... );
$query = new WP_Query( $parameters );
if ( $query->have_posts() ) {
// posts were found
while ( $query->have_posts() ) {
// set the current post, then display it
$query->the_post();
}
// cleanup afterwards
wp_reset_postdata();
} else {
// nothing was found
}
WP\\U查询的codex页面包含它所采用的所有参数及其用法的完整列表,包括
orderby
. 特别提到
rand
值选择随机帖子。这些选项不是SQL,因此在其中放置随机性原始SQL将不起作用,也不建议这样做。
如果要防止重复,应使用post__not_in
指定不检索哪些帖子,但当您试图修改存档或主查询时,我认为这对您没有帮助。
相反,类似的方法应该会有所帮助:
add_filter( \'pre_get_posts\', function ( $query ) {
if ( $query->is_main_query() && !is_admin() ) {
$query->set( \'order\', \'rand\' );
}
} );
该片段将使前端上的所有主要查询随机排序,您需要添加一个额外的检查,以确保只有您想要的页面/归档文件是随机排序的,但由于您没有提到您的查询是在哪里进行的或为什么进行的,我只能猜测,但这可能是一个有趣的新问题