In questi giorni mi sono trovato di fronte alla necessità di creare dei listati degli utenti di un sito realizzato in WordPress. Frugando su Google ho scoperto che dalla versione 3.0 di WordPress è stata realizzata una classe WP_User_Query() che permette di estrarre i dati in modo rapido ed efficace.
Quello che tuttavia non sono riuscito a trovare era come stampare gli avatar degli utenti e linkare alla pagina autore… Alla fine dopo svariati tentativi sono riuscito a venirne a capo. Vediamo quindi come fare per ottenere il listato con Avatar + Nome + Cognome.

Nota importante: ho scoperto che, se si crea un nuovo ruolo utilizzando l’Editor Ruoli Utente, è possibile fare la query passando qualsiasi ruolo e quindi possiamo potenzialmente filtrare qualsiasi utente!

Creare una pagina personalizzata

Confesso che non ho fatto esperimenti in altre pagine, nel web infatti si consigliava di utilizzare una pagina personalizzata per fare l’operazione di recupero utenti. Non credo tuttavia che possano sorgere particolari problemi, salvo avere l’accortezza di “resettare” le query del caso (wp_reset_query/wp_reset_postdata).

Comunque, nell’esempio ho realizzato una pagina personalizzata:

<?php /* Template Name: Template Chi siamo */ ?>

Wp_User_Query per estrarre i dati

Ecco lo script completo utilizzato:

< ?php  // dichiariamo gli argomenti  $args  = array(  // cerca solo gli utenti con ruolo Autore (è qui che dovrete mettere l"eventuale ruolo creato con Role Editor)  "role" => "Author",  // order results by display_name  "orderby" => "display_name"  );  // Creiamo l"oggetto WP_User_Query  $wp_user_query = new WP_User_Query($args);  // Estraiamo i risultati  $authors = $wp_user_query->get_results();  // Controlliamo che vi siano  if (!empty($authors))  {  	echo "<ul>";  	// cicliamo tutti gli utenti filtrati  	foreach ($authors as $author)  	{  		// recuperiamo i dati di ognuno  		$author_info = get_userdata($author->ID); ?>  		<li>                          //Creiamo un url alla pagina autore della persona (pare che debba avere un post almeno pubblicato per funzionare il link, vi risulta?  			<a href="<?php bloginfo("url")?>/?author=< ?php print $author_info->ID ?>">                             // Recuperiamo l"avatar e settiamo la dimensione (quadrata)  			< ?php print get_avatar( $author_info->user_email,100);?>                          // Recuperiamo nome e cognome.  			< ?php print $author_info->first_name ?> < ?php print $author_info->last_name ?>  			</a>  		</li>  	< ?php  	}  	echo "</ul>";  } else {  	echo "Nessun autore trovato";  }  ?></ul>

Ho inserito i commenti direttamente nel codice in modo da semplificarne la comprensione. Utilizzando la fantomatica wp_reset_query è possibile lanciare più query nella stessa pagina. Infine confermo che l’esempio riportato funziona anche con i Gravatars 😉

Potete vedere un esempio in cui ho utilizzato il seguente script qui: http://www.webhouseit.com/chi-siamo/