一种方法是使用post__not_in
因为您正在使用\'orderby\' => rand,
.
您需要将post或attachment ID(我想您也可以使用其他内容)放入第一个循环中的and数组中,并将该数组用作第二个查询参数,实际上您正在执行两个循环。
我不需要测试实际的代码,但逻辑应该是:;
$remove_duplicates = array(); //create an array to hold post id\'s (or whatever you use)
$new_query = new WP_Query(\'&showposts=24&orderby=rand\'); //add your other queries params here
while ($new_query->have_posts()) : $new_query->the_post(); // start first loop
$remove_duplicates[] = $post->ID ?> // throw duplicate post Id\'s into an array
endwhile; // end first loop
// start second loop for your output using the array
$args=array(
\'numberposts\' => 1,
\'orderby\' => rand,
\'status\' => \'publish\',
\'post_mime_type\' => \'image\',
\'parent\' => $post->ID
\'post__not_in\'=> $remove_duplicates ); // this is the important part to remove the duplicates.
// rest of your output.
很抱歉,我无法对此进行测试,如果它不起作用,另一种选择是只使用本机PHP函数,如
array_unique
在输出之前删除阵列中的重复项。