我如何列出当前帖子类别中的随机作者?

时间:2013-01-30 作者:Genxer

以下列出了当前类别的作者<但我希望这是当前帖子类别中6位随机作者的列表。

foreach((get_the_category()) as $category) {
  $postcat= $category->cat_ID;
 }

$current_category_ID = $postcat;
$current_cat_id = $current_category_ID;
$author_array = array();
$args = array(
\'numberposts\' => -1,
\'cat\' => $current_cat_id,
\'orderby\' => \'author\',
\'order\' => \'asc\',

);
$cat_posts = get_posts($args);
foreach ($cat_posts as $cat_post) :
if (!in_array($cat_post->post_author,$author_array)) {
$author_array[] = $cat_post->post_author;
}
endforeach;
foreach ($author_array as $author) :
$auth = get_userdata($author)->display_name;
$auth_link = get_userdata($author)->user_login;
$autid= get_userdata($author)->ID;
$link = get_author_posts_url($autid);
echo \'\'. get_avatar( $autid, \'46\' ).\'\';
echo "<a class=\'sidebar-aut\' href=\'$link";
echo "\'>";
echo \'<h6>\'.$auth.\'</h6>\';
echo "</a>";
echo "<div class=\'clearfix\'></div>";
echo "<br />";
endforeach;

1 个回复
SO网友:Matt Shelton

填充后$author_array, 你需要从中随机挑选6个用户。这里有两个简单的选择:

洗牌数组shuffle($author_array); 并使用for或while lopp从中弹出值array_pop()array_rand($author_array,6); 然后像上面那样使用foreach遍历新的随机数组就我个人而言,我更喜欢#2,但请注意,如果您尝试从少于6个元素的数组中选择6个随机元素array_rand() 你会得到警告的。您需要测试$author_array 具有count($author_array) 首先限制array_rand() 命令设置为潜在作者列表的最大大小,如果为1,则完全跳过它。

比如,在你的第一个foreach结束后:

if(count($author_array) >= 6) {
    $max = 6;
} else {
    $max = count($author_array);
}

$random_authors = array_rand($author_array,$max);
foreach ($random_authors as $author) { ...

结束

相关推荐

Dropdown Menu for Query_Posts

我可以使用查询帖子成功地查询帖子结果,例如。。。<?php // The Query query_posts(\"gdsr_sort=rating\"); // The Loop while ( have_posts() ) : the_post(); ?> <?php get_template_part( \'content\', get_post_format() ); ?> <?php