我想在每个页面刷新时显示不同的内容。为了实现这一点,我使用了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>
我哪里做错了?
最合适的回答,由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\'
但最好是这样。