web-dev-qa-db-fra.com

Barre latérale de l'auteur aléatoire

J'essaie d'utiliser les auteurs de wordpress pour créer un bloc de projecteur dans la barre latérale qui sélectionne un auteur au hasard parmi plusieurs utilisateurs et n'affiche que les informations d'un utilisateur. Je souhaite inclure le nom d'affichage de l'auteur, une vignette, un extrait de sa biographie et un lien vers la page complète de l'auteur. Je n'ai trouvé aucun plugin qui supporte cela. Je ne suis pas un expert en PHP/MySQL, alors écrire une fonction est un peu en dehors de mes capacités, mais je peux la lire et suivre le code. Ce que j'ai jusqu'ici c'est:

<?php 
    global $wpdb;
    $ids = $wpdb->get_results( "SELECT {$wpdb->usermeta}.user_id from {$wpdb->usermeta} where ({$wpdb->usermeta}.meta_key='wp_capabilities') and ({$wpdb->usermeta}.meta_value >0 )" );
    $user_id = Rand(1,count($ids));
    $wpdb->show_errors(); 
?>
<h2><?php get_the_author_meta( 'display_name', $user_id ); ?></h2>
<img class="left" src="" alt="<?php print $selected_user; ?>" />
<p><?php get_the_author_meta( 'user_description', $user_id ); ?> <a href="<?php get_the_author_meta( 'user_url', $user_id ); ?>">read more</a>

Cela retourne un tableau mais je ne sais pas quoi faire pour obtenir le résultat dont j'ai besoin. Merci d'avance.

1
Keith

Vous pouvez supprimer de nombreuses étapes si vous utilisez get_users() au lieu de votre requête SQL personnalisée. Vous pouvez ensuite sélectionner un utilisateur aléatoire dans ce tableau à l'aide de array_Rand() (fonction native PHP, et non d'une fonction wordpress). La clé que vous devriez utiliser sera alors renvoyée. Voici un exemple:

$users = get_users( $your_params );
$id = array_Rand( $users, 1 );

$user = $users[$id];

Cela vous laissera avec $user, qui contiendra un objet utilisateur avec à peu près tout ce que vous pourriez souhaiter sur un utilisateur ... ou au moins la possibilité d'obtenir ce dont vous avez besoin. get_avatar() fera la vignette ... en supposant que vous voulez la valeur par défaut.

1
mor7ifer