ARRAY_RAND是否工作不正常?

时间:2016-09-19 作者:dh47

我想在每个页面刷新时显示不同的内容。为了实现这一点,我使用了PHParray_rand() 作用

我使用下面的代码获取帖子并将内容存储在一个值中。当我输出之前的值时array_rand(), 它正在显示第一个帖子内容,但在array_rand() 如果我输出的随机功能正在工作,但显示一些随机数。我相信这是一个帖子计数。显示的最小数字为0,最大数字为2。共有3个帖子。

检查此项here 我使用的代码是。

<?php
    $args = array(
        \'posts_per_page\' => \'-1\',
        \'order\'=> \'ASC\',
        \'orderby\'=>\'menu_order\',
        \'paged\' => $paged,
        \'post_type\' => \'Didyouknows\' 
    );

    $loop = new WP_Query( $args );
    $posts = $loop->get_posts();

    foreach($posts as $post){
        //print_r($loop);exit;
        //echo $loop->[\'ID\'];

        $rval[]= $post->post_content;

        //print_r($rval);exit;
        //echo $loop[post_content];
        //print_r($rval);exit;

        $rand = array_rand($rval);
        //echo $rval[$rand[0]];
        //echo $rand;
    }
?>

<h2><?php echo $rand; ?></h2>
我哪里做错了?

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

获取一篇随机帖子要比获取所有帖子,然后从查询中提取一篇随机帖子有效得多。这是最新的WP_Query 实例使用\'orderby\' => rand:

$args = array( 
    \'orderby\' => \'rand\',
    \'posts_per_page\' => \'1\',
    \'paged\' => $paged,
    \'post_type\' => \'Didyouknows\', // Post type names should never use capital letters, btw 
);

$loop = new WP_Query( $args );

if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) { $loop->the_post(); ?>
        <h2><?php the_content(); ?></h2><?php
    }
}
wp_reset_postdata();
在原始代码中,可以看到0、1和2的值,它们表示$rval 大堆你应该走了$rand = array_rand($rval); 超出foreach 循环并执行以下操作:

<h2><?php echo $rval[ $rand ]; ?></h2>
第一个解决方案使用WP_Query\'orderby\' => \'rand\' 但最好是这样。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果