随机获取作者

问题描述 投票:0回答:2

如何随机获取作者详细信息和作者页面永久链接。我已经检查了 WordPress 的新 get_users() 函数,该函数返回作者,但我无法对它们进行随机排序。

这是我正在使用代码的网站:http://citystir.com

有什么帮助吗?


解决方案:感谢theomega,我已经解决了这个问题。这是仅供社区分享的代码:

$args = array('role' => 'author');

    $authors = get_users($args);
    shuffle($authors);
    $i = 0;
     foreach ($authors as $author): 
           if($i == 4) break;
           //do stuff
           $i++;
         endforeach;

没有对 $args 设置限制,因为我需要在所有用户中进行随机播放。希望它能帮助野外的人。 :D 谢谢!

php wordpress wordpress-theming
2个回答
7
投票

尝试

$users = get_users('ciriteria');
shuffle($users)
//users is now shuffled

使用PHP Shuffle 函数


1
投票

我们可以使用

get_users()
来获取作者列表、具有特定角色的用户、具有特定元的用户等。该函数返回可以按 ID、登录名、nicename、电子邮件、url、注册、显示名称排序的用户、post_count 或 meta_value。但是没有随机选项,例如 get_posts() 函数提供的随机显示帖子。

由于

get_users()
函数使用
WP_User_Query
类,因此我们可以使用一个动作钩子
pre_user_query
来修改类变量。

这个想法是使用我们自己的“rand”参数顺序。如果我们将 rand 放入 orderby 参数,则将使用“user_login”。在这种情况下,我们需要将其替换为RAND()以随机结果用户。

在下面的示例中,我们“随机”,您可以按名称使用自己的订单。

add_action( 'pre_user_query', 'my_random_user_query' );

function my_random_user_query( $class ) {
    if( 'rand' == $class->query_vars['orderby'] )
        $class->query_orderby = str_replace( 'user_login', 'RAND()', $class->query_orderby );

    return $class;
}

WP_User_Query 包含查询顺序和我们的参数。现在,我们有一个新的 WordPress 参数排序。

$users = get_users( array(
    'orderby' => 'rand',
    'number'  => 5
));
print_r( $users );
© www.soinside.com 2019 - 2024. All rights reserved.