从WP_QUERY循环中的数组中删除

时间:2013-06-14 作者:Simon Cooper

我有很多页,上面有一个“word”标签。

对于这些页面中的每一个,我希望在主页上链接到该页面的btn/Div。

此按钮将显示数组中的随机单词。

我希望每个按钮上的单词都不同,因此我在数组中随机选取了一个单词,然后删除了该单词。

我的问题是单词没有从数组中删除-如果我在每个循环中回显数组计数,它将保持不变。

如何从数组中随机选取一个单词,然后删除该单词。

    <?php

        $frontAgrs = array(
            \'post_type\' => \'page\',
            \'tag\' => \'word\',
            \'order\' => \'ASC\'
        );

        $frontLoop = new WP_Query($frontAgrs);

        if($frontLoop->have_posts()):
            while($frontLoop->have_posts()):
                $frontLoop->the_post();

        /*----Phrase-------------*/ 
        $phrases = [\'Hello Sailor\',\'Acid Test\',\'Bear Garden\',\'Botch A Job\',\'Dark Horse\',
        \'In The Red\',\'Man Up\',\'Pan Out\',\'Quid Pro Quo\',\'Rub It In\',\'Turncoat\',
        \'Yes Man\',\'All Wet\',\'Bag Lady\',\'Bean Feast\',\'Big Wig\'];

        $rand_Num = array_rand($phrases);
        $rand_phrase = $phrases[$rand_Num];
        unset($phrases[$rand_phrase]);      
        echo count($phrases);       

    ?>

    <?php echo \'<div><a href="\'.get_permalink($post->ID).\'"><p>\'.$rand_phrase_value.\'</p></a></div>\' ?>


    <?php endwhile; endif; ?>

    <?php wp_reset_postdata(); ?>

1 个回复
SO网友:Rohit Pande

之所以会发生这种情况,是因为您正在每次迭代时重新初始化短语数组。在循环外定义该数组,这段代码就会起作用。

<?php

        $frontAgrs = array(
            \'post_type\' => \'page\',
            \'tag\' => \'word\',
            \'order\' => \'ASC\'
        );

        $frontLoop = new WP_Query($frontAgrs);

/*----Phrase-------------*/ 
            $phrases = array(\'Hello Sailor\',\'Acid Test\',\'Bear Garden\',\'Botch A Job\',\'Dark Horse\',
            \'In The Red\',\'Man Up\',\'Pan Out\',\'Quid Pro Quo\',\'Rub It In\',\'Turncoat\',
            \'Yes Man\',\'All Wet\',\'Bag Lady\',\'Bean Feast\',\'Big Wig\');

        if($frontLoop->have_posts()):
            while($frontLoop->have_posts()):
                $frontLoop->the_post();

        $rand_Num = array_rand($phrases);
        $rand_phrase = $phrases[$rand_Num];
        unset($phrases[$rand_Num]);      
        echo count($phrases);       

    ?>

    <?php echo \'<div><a href="\'.get_permalink($post->ID).\'"><p>\'.$rand_phrase_value.\'</p></a></div>\' ?>


    <?php endwhile; endif; ?>

    <?php wp_reset_postdata(); ?>
希望此解决方案对您有效。

Edit:

查看工作here.

结束

相关推荐

Why posts array is empty?

我尝试获取没有自定义字段集的帖子,或者if set的值与给定的参数不同。这是我的代码: $args_included = array( \'numberposts\' => 1, \'post_type\' => \'post\', \'post_status\' => \'published\', \'meta_query\' => array(&#x