Conoscenza dei metadati di WordPress interrogazione di post e utenti per meta dati

Finora in questa serie hai imparato come accedere ai metadati di WordPress e lavorare con gli array in cui vengono restituiti. Non aggiungiamo solo campi personalizzati ai post di WordPress in modo che possiamo visualizzare queste informazioni, ma anche per poterle ordinare.

Ora che sai come recuperare e visualizzare i metadati, è ora di imparare come personalizzare il ciclo di WordPress per restituire solo i post con valori meta specifici.

Utilizzo di WP_Query in Query per valore del campo Meta

Per personalizzare i post che WordPress restituisce in base ai metadati, dobbiamo utilizzare WP_Query e specificare a meta_query. Se, per esempio, avessimo un tipo di messaggio personalizzato chiamato "film" con un campo personalizzato chiamato "direttore", potremmo richiedere dei film il cui direttore era un regista di uno dei tre Guerre stellari cinema.

Dai un'occhiata al codice qui sotto e vedi se puoi usare la tua padronanza degli array che hai acquisito nell'ultima parte per capire cosa sta succedendo con meta_query, che spezzerò quello che sta succedendo sotto il codice.

 $ sw_args = array ('post_type' => 'film', 'meta_query' => array (array ('chiave' => 'director', 'value' => array ('George Lucas', 'Richard Marquand', ' Irvin Kershner '),' compare '=>' IN ',))); $ query = new WP_Query ($ sw_args); if ($ the_query-> have_posts ()) echo '

Film di Star Wards Director

'; eco '
    '; while ($ the_query-> have_posts ()) $ the_query-> the_post (); eco '
  • '. get_the_title (). '
  • '; eco '
'; / * Ripristina dati post originali * / wp_reset_postdata ();

Come puoi vedere, abbiamo una serie di nomi di registi annidati all'interno di altri tre array. Smontiamo, pezzo per pezzo.

Innanzitutto, iniziamo un array per il nostro WP_Query args. Dopo il nostro primo argomento "post_type", iniziamo un array per ospitare i nostri meta_query argomenti.

All'interno di questo, specifichiamo quale chiave cercare - nel caso "director". Forniamo anche una serie di valori da cercare in quella chiave.

L'ultimo argomento è come confrontare questi valori, in questo caso si specifica "IN" per recuperare eventuali post con questi valori nel key director.

Altri confronti

E se volessimo film diretti da un regista di un film di Star Wars, ma non escludere i Prequel di Star Wars? Possiamo semplicemente aggiungere un'altra serie di argomenti al nostro meta_query, ma questa volta per valore usa una serie di titoli di questi film per la chiave film_title e per il confronto, usa 'NOT LIKE' per escludere i post che hanno questi valori nel file film_title campo.

 $ sw_args = array ('post_type' => 'film', 'meta_query' => array (array ('chiave' => 'director', 'value' => array ('George Lucas', 'Richard Marquand', ' Irvin Kershner '),' compare '=>' IN ',), array (' chiave '=>' film_title ',' value '=>' Phantom Menace ',' Attack of the Clones ',' Revenge of the Sith ' ), 'compare' => 'NON MI PIACE'),)); $ query = new WP_Query ($ sw_args);

Ora WordPress cercherà i film di questi tre registi, il cui titolo non è uno dei tre prequel.

Visualizzazione dei campi Meta in WP_Query

Finora ti ho mostrato come usare WP_Query per trovare post con valori specifici per un campo personalizzato, ma non su come mostrare quei campi.

Mostrare questi campi è praticamente lo stesso di prima, ma invece di usare get_the_ID () per specificare l'ID per get_post_meta () lo specifichiamo in un contesto di oggetto. Quindi nel nostro ciclo, che puoi vedere di seguito, l'ID viene recuperato in modo leggermente diverso $ Query-> post-> ID.

 $ sw_args = array ('post_type' => 'film', 'meta_query' => array (array ('chiave' => 'director', 'value' => array ('George Lucas', 'Richard Marquand', ' Irvin Kershner '),' compare '=>' IN ',), array (' chiave '=>' film_title ',' value '=>' Phantom Menace ',' Attack of the Clones ',' Revenge of the Sith ' ), 'compare' => 'NON MI PIACE'),)); $ query = new WP_Query ($ sw_args); if ($ the_query-> have_posts ()) echo '

Film di Star Wards Director

'; eco '
    '; while ($ the_query-> have_posts ()) $ the_query-> the_post (); eco '
    • '; eco '
    • '. get_the_title (). '
    • '; eco '
    • '. get_post_meta ($ query-> post-> ID, 'director', true). '
    • '; eco '
  • " eco '
'; / * Ripristina dati post originali * / wp_reset_postdata ();

Utilizzando WP_User_Query

Proprio come nell'ultima parte quando abbiamo usato WP_Query per trovare messaggi con determinati valori per vari campi personalizzati, possiamo usare WP_Queryequivalente della tabella utente WP_User_Query.

Ad esempio, se avessimo un campo personalizzato chiamato subscriber_level e volevo trovare solo gli utenti che avevano il livello di abbonato di extra_special o super_special potremmo, allo stesso modo in cui abbiamo cercato i film diretti dai tre registi dei film di Star Wars:

 $ args = array ('meta_query' => array (array ('chiave' => 'subscriber_level', 'value' => array ('extra_special', 'super_special'); 'compare' => '='))) ; $ user_query = new WP_User_Query ($ args); if (! empty ($ user_query-> results)) echo '

Utenti speciali e super speciali

'; eco '
    '; foreach ($ user_query-> risultati come $ utente) echo '
  • '. $ utente-> display_name. '
  • '; eco '
';

Proprio come con WP_Query, possiamo combinare diversi confronti per controllare ulteriormente quali utenti restituisce la nostra query. Il prossimo esempio combina l'ultima query con una query, questa volta con wp_users tabella stessa per gli utenti i cui nomi sono Luke, Han o Leia.

 $ args = array ('meta_query' => array (array ('chiave' => 'subscriber_level', 'value' => array ('extra_special', 'super_special'); 'compare' => '=')), 'search' => array ('Luke', 'Han', 'Leia'), 'search_columns' => array ('user_nicename', 'display_name'),); $ user_query = new WP_User_Query ($ args); if (! empty ($ user_query-> results)) echo '

Utenti speciali e super speciali chiamati Luke, Han o Leia

'; eco '
    '; foreach ($ user_query-> risultati come $ utente) echo '
  • '. $ utente-> display_name. '
  • '; eco '
';

Avvolgendo

In questa serie sei stato presentato ai meta dati di WordPress e hai imparato alcune lezioni sui concetti base di PHP lungo la strada.

Hai imparato come ottenere i valori dai campi che memorizzano metadati dei post e degli utenti e come costruire query per post e utenti in base ai metadati. Con questa conoscenza puoi essere preparato a lavorare con alcuni campi personalizzati e a come utilizzare WordPress come un complesso sistema di gestione dei contenuti.