Come estendere la ricerca di wordpress includendo anche la tabella utenti?
Ecco la query da usare.
Introduzione
Se devi creare una ricerca personalizzata che effettui ricerche anche sugli autori dei post, potrebbe esserti utile questa guida perché ti spiega come fare.
Di default wordpress effettua ricerche solamente nel titolo o nel content dell’articolo. Ma noi, nella nostra ricerca, dobbiamo cercare anche all’interno della nome dell’autore e anche nel campo Bio. Insomma senza perdere tempo in chiacchiere, vediamo come fare.
Effettuare una ricerca all’interno degli autori di wordpress
Dalla versione 3.1, wordpress ci mette a disposizione la classe WP_User_Query che ci permette di effettuare delle query direttamente nella tabella degli utenti.
Effettuare una ricerca generica su tutti gli utenti
$search_string = esc_attr( trim( get_query_var('s') ) ); $users = new WP_User_Query( array( 'search' => '*'.$search_string.'*', 'search_columns' => array( 'user_login', 'user_nicename', 'user_email', 'user_url', ), ) ); $users_found = $users->get_results();
Ecco che con questa query effettuiamo una ricerca sui campi user_login, user_nicename, user_email, user_url.
N.b: qui utilizziamo il carattere jolly “*”. Per restringere la ricerca per dominio, ad esempio, è possibile sostituire il 2° asterisco con la stringa ‘*@example.com’.
Cercare utenti tramite i meta attributi
$search_string = esc_attr( trim( get_query_var('s') ) ); $users = new WP_User_Query( array( 'search' => "*{$search_string }*", 'search_columns' => array( 'user_login', 'user_nicename', 'user_email', 'user_url', ), 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'first_name', 'value' => $search_string , 'compare' => 'LIKE' ), array( 'key' => 'last_name', 'value' => $search_string , 'compare' => 'LIKE' ) ) ) ); $users_found = $users->get_results();
E con questo codice abbiamo effettuato una ricerca all’interno della tabella utenti. Il risultato poi lo puoi utilizzare all’interno di un tuo codice personalizzato, di un template particolare o all’interno del template di ricerca.
Per oggi è tutto. Se hai dubbi o domande, non esitare a lasciare il tuo commento.
DETTAGLI
Livello: medio
Compatibilità: testato su WP versione 3.9.1