Nella prima parte di questa serie, abbiamo trattato quali metadati di WordPress sono, come possono essere recuperati e i vari tipi di dati (come oggetti o matrici) in cui può essere restituito. Ora è il momento di conoscere i diversi tipi di array.
Quando scrivi manualmente un array, sai qual è la sua struttura e il nome di ciascun indice. Ma quando si costruiscono array interrogando un database, è necessario eseguire alcune operazioni di detective per determinare la struttura dei dati restituiti e i nomi degli indici.
Prima di saltare ai vari tipi di array disponibili, è importante capire che un array PHP è una variabile che contiene più di un pezzo di dati.
L'esempio più semplice di un array è un elenco di valori separati da virgole, all'interno della funzione array ()
, come questo:
$ heros = array ('Luke', 'Leia', 'Han');
PHP indicizza automaticamente gli array creati in elenchi separati da virgole, assegnando a ciascun articolo un indice numerico, a partire da zero. Ciò significa che potremmo recuperare il valore del secondo elemento "Leia" del $ eroi
array specificando l'indice 1.
Ecco come sarebbe:
$ heroes = array ('Luke', 'Leia', 'Han'); echo $ heroes [1];
Per un pratico esempio di WordPress, dai un'occhiata alla funzione wp_get_attachment_image_src () che restituisce una matrice indicizzata di informazioni su un'immagine.
Possiamo ottenere l'URL, la larghezza e l'altezza di un'immagine usando gli indici numerici dall'array restituiti da questa funzione (si noti che il "7" passato alla funzione fa riferimento all'ID allegato e, in questo caso, è arbitrario ai fini di il nostro esempio):
$ img = wp_get_attachment_image_src (7); eco ' ';
Naturalmente, tenere traccia dei numeri di indice negli array può creare confusione, ed è per questo che PHP ci consente di creare array associativi. Ritornando al nostro $ eroi
Ad esempio, potremmo assegnare un nome a ciascun elemento del nostro array:
$ heroes = array ('unlikely_hero' => 'Luke', 'badass_princess' => 'Leia', 'lovable_rouge' => 'Han',);
Chiamiamo questi nomi chiavi. In questo array, diremmo che la chiave "unlikely_hero" ha il valore "Luke". Possiamo ottenere il valore di questa chiave ponendola tra parentesi accanto alla variabile. Per esempio:
echo $ hereos ['unlikely_hero'];
Finora, abbiamo esaminato gli array che sono essenzialmente elenchi di elementi, ma gli array possono anche essere composti da altri array. Chiamiamo questi array multidimensionali. Quando creiamo un array multidimensionale, abbiamo essenzialmente un elenco di liste, in cui ogni indice o chiave nel nostro array è definito da un altro array.
Per esempio:
$ heroes => array ('Luke' => array ('full_name' => 'Luke Skywalker', 'home_planet' => 'Tatooine', 'trope' => 'Unlikely Hero',), 'Leia' => array ('full_name' => 'Leia Organa', 'home_planet' => 'Alderaan', 'trope' => 'Badass Princess',), 'Han' => array ('full_name' => 'Han Solo', ' home_planet '=>' Corell ',' trope '=>' Lovable Rouge ',),);
Questo tipo di array è molto utile in quanto ci consente di collegarci, scrivere una volta il nostro markup e lasciarlo scorrere su iterate il più volte possibile.
Come ho detto all'inizio di questo articolo, lavorare con i metadati può spesso implicare del lavoro investigativo per scoprire la struttura dell'array. Come ogni detective, devi assicurarti di avere gli strumenti giusti per il lavoro.
Gli sviluppatori amatoriali modificano temporaneamente i loro file tematici per i valori di output degli array. Ma se vuoi lavorare in modo rapido ed efficiente lo farai in modo pro - con la console di debug.
Gli sviluppatori amatoriali modificano temporaneamente i loro file tematici per i valori di output degli array. Ma se vuoi lavorare in modo rapido ed efficiente lo farai in modo pro - con la console di debug.
Debug Console è uno dei numerosi componenti aggiuntivi per il plugin Debug Bar di cui nessuno sviluppatore WordPress dovrebbe rinunciare. Se non si dispone già della barra di debug installata nell'ambiente di sviluppo, è necessario farlo il prima possibile.
Una volta installati questi due plug-in, sarà possibile accedere a una console dalla barra di amministrazione, dove è possibile eseguire codice PHP. Ora invece di modificare un file del tema, salvando e aggiornando puoi semplicemente sperimentare il codice direttamente nel browser.
Basta fare clic su "Esegui" e vedere i risultati nella parte inferiore dello schermo. La parte migliore è che eventuali errori generati verranno visualizzati nella casella dei risultati, non sul front-end dei siti. Errori irreversibili interrompono la console di debug, non il tuo sito.
A proposito, ho appena graffiato la superficie di ciò che Debug Bar può fare. Inoltre, sia la barra di debug che la console di debug, oltre a una tonnellata di altre fantastiche utilità sono incluse nel plugin per sviluppatori, che consiglio vivamente. Mentre impari a lavorare con i metadati potresti anche trovare utile il plugin Debug Bar Post Meta.
Ora che hai un posto dove fare i tuoi test, come esplori gli interni di un array. Per questo lavoro, PHP ci fornisce due funzioni di utilità che non utilizzeremmo mai per creare output front-end, ma che sono perfette per il lavoro diagnostico-var_dump ()
e print_r ()
.
Entrambe queste funzioni accettano una variabile contenente un array come input e ne restituiscono il contenuto da esaminare. var_dump ()
contiene più informazioni come il tipo di dati (stringa, booleano, intero, ecc.) e la lunghezza dei dati, mentre print_r ()
è progettato per essere più leggibile e salta queste informazioni aggiuntive.
Ecco uno screenshot di un var_dump dei metadati per un post. Mostra come ho scavato in un solo campo. Il mio obiettivo era quello di ottenere il valore del campo del meta titolo creato dal plugin SEO di Yoast.
Come puoi vedere dal var_dump, che ho generato da tutti i metadati per il post ID # 1 con get_post_meta (1);
Stavo lavorando con un array multidimensionale associativo, che conteneva un array indicizzato con un solo indice. Esaminando il var_dump, ho scoperto che la chiave di cui avevo bisogno era "_yast_wpseo_title" e che le informazioni reali di cui avevo bisogno erano nel primo indice. Per accedervi ho inserito la chiave '_yoast_wpseo_title' nella sua variabile, quindi ho fatto eco al primo indice come questo:
$ meta = get_post_meta (1); $ seo_title = $ meta ['_ yoast_wpseo_title']; eco 'TITOLO SEO: '. $ seo_title [0]. '';
Questo è un buon esempio per illustrare la strategia per trovare la chiave necessaria, ma non è il modo più efficiente per ottenere le informazioni, una volta che si conosce la chiave. Quindi, dopo aver svolto il lavoro investigativo per trovare la chiave giusta, specificherò la chiave direttamente nella chiamata a get_post_meta ()
. Quando abbiamo bisogno di una sola chiave, puoi specificarla direttamente nel secondo argomento di get_post_meta ()
.
È importante tenerlo presente get_post_meta (1, '_yoast_wpseo_title');
non restituirà il valore di cui abbiamo bisogno, ma restituirà un array. Aggiungendo true per il terzo argomento 'single' possiamo ottenere solo il primo indice, che è ciò di cui abbiamo bisogno.
Quindi, per richiamare direttamente il titolo SEO, tutto in una riga avremmo bisogno di fare questo:
get_post_meta (1, '_yoast_wpseo_title', true);
Finora in questa serie, ti ho mostrato come lavorare con wp_postmeta
tabella, che contiene tutti i campi personalizzati aggiunti a un tipo di messaggio.
Gli utenti possono avere anche campi personalizzati. I metadati degli utenti, i campi aggiuntivi aggiunti ai profili utente funzionano allo stesso modo dei metadati dei post, ma sono archiviati nel wp_usermeta
tavolo. Quando si lavora con i meta dati dell'utente, invece di get_post_meta ()
, noi usiamo get_user_meta ()
.
Queste due funzioni funzionano in modo identico, ricevono solo i loro dati da due diverse tabelle nel database.
Ecco un esempio usando get_user_meta ()
per generare un'immagine personalizzata come collegamento ai post di un autore:
$ users = array (55, 89, 144, 233, 377); foreach ($ utenti come $ utente) $ link = get_author_posts_url ($ user); $ img = get_user_meta ($ user, 'link_img',; echo ''; // end foreach loop
Nelle due parti di questa serie, abbiamo esaminato i vari tipi di metadati, come sono memorizzati e come recuperarli. Inoltre, abbiamo esaminato i due tipi di array offerti da PHP e in che modo ciò corrisponde ai metadati associati a post e utenti.
Nella parte successiva della serie, daremo un'occhiata esatta su come possiamo scorrere ogni tipo di dati in modo da avere la potenza e la flessibilità per personalizzare l'output per i nostri modelli.