如何使用化身显示随机用户

时间:2015-01-06 作者:Iurie

我适应了一点a function 用一个短代码显示多个随机用户及其头像。这是可行的,但有些地方不太好。有时它显示的用户比我想要的少一个(只是一个空行,而不是第一个用户),有时它包括管理员,尽管它不应该包括管理员。我的代码有什么问题?

add_shortcode( \'random_users\', \'display_random_users\' );
//Usage: [random_users how_many = 3]

function display_random_users( $atts ) {

    extract(shortcode_atts( array( "how_many" => \'\' ), $atts ) );

    $args = array(
        \'orderby\' => \'ID\',
        \'role\' => \'subscriber\',
        \'fields\' => \'ID\'
    );

    $users = get_users( $args );
    $users = array_rand( $users, $how_many );

    foreach ( $users as $userID ) {
        echo \'<a href="\' . 
            bp_core_get_user_domain( $userID ) . \'">\' . 
            bp_core_fetch_avatar( array( \'item_id\' => $userID ) ) . \'<br />\' . 
            xprofile_get_field_data( \'1\', $userID ) . \'</a><br />\';
    }
}

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

我不知道为什么您的查询返回的ID比需要的多。这个$args 对于get\\u,用户看起来是正确的。

默认情况下,get\\u用户不支持orderby=rand, 但您可以覆盖该选项。见下文:

function random_user_query( &$query )
{
    $query->query_orderby = "ORDER BY RAND()";
}

// Usage: [random_users how_many = 3]
add_shortcode( \'random_users\', \'display_random_users\' );
function display_random_users( $atts ) {

    shortcode_atts( array( "how_many" => \'\', ), $atts );

    // Create a function to override the ORDER BY clause
    add_action( \'pre_user_query\', \'random_user_query\' );

    $users = get_users( array(
        \'role\'    => \'subscriber\',
        \'fields\'  => \'ID\',
        \'orderby\' => \'rand\',
        \'number\'  => $atts[\'how_many\'],
    ) );

    foreach ( $users as $userID ) {
        printf( 
            \'<a href="%s">%s<br />%s</a><br />\',
            bp_core_get_user_domain( $userID ),
            bp_core_fetch_avatar( array( \'item_id\' => $userID ) ),
            xprofile_get_field_data( \'1\', $userID )
        );
    }

    // Remove the hook
    remove_action( \'pre_user_query\', \'random_user_query\' );
}
这样,您只需查询$how\\u many用户,而不是查询所有用户,然后过滤掉$how\\u many。

我找到了这个钩子here.

结束

相关推荐

与wp_USERS一起查询wp_usermeta

我想使用WordPress查询功能,而不需要外部插件。以下是我目前掌握的情况:add_filter(\'user_search_columns\', \'user_search_columns_bd\' , 10, 3); function user_search_columns_bd($search_columns, $search, $this){ if(!in_array(\'display_name\', $search_columns)){