web-dev-qa-db-fra.com

Obtenez des utilisateurs dans une requête et limitez la sortie utilisateur à cinq dans un ordre aléatoire

Dans le footer.php, je montre tous les auteurs de mon blog avec le code suivant:

$args = array(
    'meta_key' => 'last_name',
    'orderby' => 'meta_value',
    'order' => 'ASC'
);

// Create the WP_User_Query object
$wp_user_query = new WP_User_Query( $args );
$wp_user_query->query_orderby = str_replace( 'user_login', 
    'wp_usermeta.meta_value', $wp_user_query->query_orderby );

// Get the results
$authors = $wp_user_query->get_results();

Est-il possible de limiter la sortie à 5 utilisateurs aléatoires? Comme posts_per_page => 3 et orderby => Rand?

1
Peesen87

Oui possible, il suffit d'indiquer à WordPress d'utiliser Rand() SQL lors du passage de Rand dans orderby paramètre:

add_action( "pre_user_query", function( $query ) {
    if( "Rand" == $query->query_vars["orderby"] ) {
        $query->query_orderby = str_replace( "user_login", "Rand()", $query->query_orderby );
    }
});

Maintenant vous pouvez utiliser:

$users = get_users( array(
    'meta_key' => 'last_name',
    'orderby' => 'Rand',
    'number'  => 3 // limit
));

print_r( $users );

J'espère que cela pourra aider.

2
Samuel Elh
function get_random_authors($number) {

$users = wp_list_authors( array(
'orderby' => 'Rand',
'number'  => $number // limit
));

return $users;

}

print_r(get_random_authors(3));
0
Nicholas Koskowski