随机图像脚本正在工作,但希望避免重复

时间:2012-01-03 作者:jw60660

我使用以下内容显示随机图像:

<?php $new_query = new WP_Query(\'&showposts=24\'); ?>
         <?php while ($new_query->have_posts()) : $new_query->the_post(); ?>
         <?php $args = array (
            \'post_type\' => \'attachment\',
            \'numberposts\' => 1,
            \'orderby\' => rand,
            \'status\' => \'publish\',
            \'post_mime_type\' => \'image\',
            \'parent\' => $post->ID
         ); ?>
         <?php $attachments = get_posts($args);
            if ($attachments) {
                foreach ($attachments as $attachment) {
                    echo \'<li>\';
                    echo wp_get_attachment_link($attachment->ID, \'thumbnail\', true, \'\');
                    echo \'</li>\';
                }
            };

            endwhile;
但我正在努力避免重复。有什么想法吗?

谢谢

1 个回复
最合适的回答,由SO网友:Wyck 整理而成

一种方法是使用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 在输出之前删除阵列中的重复项。

结束

相关推荐

images are broken

我有一段代码,用于显示来自RSS提要的每篇帖子上的图像,这些图像将从yahoo images search获取,我将把这段代码粘贴到我的单曲中。php文件,这样它就会出现在我的帖子之后,我在其中一个网站上找到了这段代码,这段代码用于获取图像,但不是从yahoo获取图像,而是从不同的feed获取图像我使用的代码如下:- <?php include_once(ABSPATH.WPINC.\'/rss.php\'); // path to include script $f