Costruiremo un plug-in da utilizzare utilizzando i filtri e gli hook disponibili per modificare le colonne del post del pannello di amministrazione. Aggiungi, elimina e popolare con il contenuto.
Quando si pensa allo sviluppo di WordPress, le cose più comuni che mi vengono in mente sono la funzionalità e l'implementazione di temi e plug-in per far sì che un'idea semplice funzioni e assuma il modo in cui si desidera. Con una pagina di backend e alcune o molte impostazioni qua e là.
La flessibilità dell'API di WordPress va ben oltre le cose che avresti potuto avere familiarità.
Prima ancora di iniziare a fare qualcosa, dobbiamo capire cosa realizzeremo, quale sarà il nostro risultato finale. Stiamo per creare un plug-in che gestirà le colonne di post del pannello di amministrazione e il loro contenuto. Per costruire un plugin abbiamo bisogno di un'idea che si adatti alle nostre esigenze, quindi per questo tutorial il nostro plugin trasformerà leggermente la funzionalità dei post in un'interfaccia di gestione della valuta e dei prezzi molto semplice. Per essere ancora più specifici, stiamo andando a:
E questo è tutto, in poche parole, tutto ciò di cui tratta questo tutorial. Ancora una volta, stiamo parlando di implementarlo solo nelle pagine di gestione dei post del pannello di amministrazione. Come parte del piano, è implicito che tu sappia come un plugin WordPress di base sia creato e funzioni, ma comunque, sto per menzionare che creeremo una directory nella cartella plug-in di WordPress con il nome di productA e un file al suo interno chiamato productA.php. Immagino sia ovvio ora che il nostro plugin è chiamato Prodotto A
, Penso che sia un buon nome per un semplice plugin con le funzionalità di cui sopra ai fini di questo tutorial.
Questa è una parte facile e divertente, che crea le prime parti del plug-in più necessarie, ovvero le cose che lo identificano in WordPress come un plug-in e che esegue il file affinché il nostro plugin funzioni correttamente. Quindi andiamo avanti e creiamo il nostro Nome del plugin
, collegare Descrizione
, Autore
nome e plugin Versione
i valori dell'intestazione commentati nella parte superiore del codice sorgente del file del plugin, come nell'esempio seguente:
Passaggio 3 Implementazione di azioni e filtri necessari
La prima cosa che faremo è aggiungere la funzionalità del meta-box nel nostro plugin. Vogliamo aggiungere un metabox personalizzato nella nostra pagina di modifica, da qualche parte nella parte superiore della barra laterale destra. Per fare ciò dobbiamo creare un'azione (o un hook) di cui ci occuperemo un po 'più tardi, ma vediamo come viene chiamato il hook e implementato in questo primo passo:
Il gancio della scatola Meta
function pA_admin_init () add_meta_box ('pA_metaid', __ ('quantity / price', 'pA_textdomain'), 'pA_inner_custom_box', 'post', 'side', 'high'); add_action ('admin_init', 'pA_admin_init');Per prima cosa aggiungiamo una nuova azione nella parte inferiore del nostro file che useremo per un primo parametro, il tag di azione di
admin_init
per chiamare questa funzione ogni volta che un utente accede all'area di amministrazione. Il secondo parametro è il nome della funzione di callback che deve essere implementato quando viene attivato l'hook. Chiameremo questa funzionepA_admin_init
e sembra come sopra.Il
pA_admin_init
la funzione contiene il metodo che crea la meta-box di cui abbiamo bisogno, generata dalla funzioneadd_meta_box
con le seguenti variabili:
pA_metaid
- per un identificatore univoco della meta-box__ ('quantità / prezzo', 'pA_textdomain')
- una stringa che rappresenta il titolo della meta-box'PA_inner_custom_box'
- la funzione di callback'inviare'
- una stringa che rappresenta il tipo di post (perché stiamo lavorando sui post, stiamo andando a impostare il valore stringa su 'inviare
''lato'
- una stringa che rappresenta la posizione dello schermo di cui vogliamo che la nostra meta-box sia attiva, possiamo usare 'normale
','Avanzate
' o 'lato
'. Stiamo usando 'lato
'come vogliamo che mostri sul lato destro del nostro contenuto'Alto'
- la posizione tra gli altri elementi del meta box del lato del contenuto della paginaQuesto sarebbe più o meno per il primo passo dell'azione di meta-box.
Ad un certo punto i dati introdotti nella meta-box devono essere salvati, per salvarlo abbiamo bisogno di aggiungere un altro hook alla lista, questa volta con un tag diverso, specifico come primo parametro.
add_action ('save_post', 'pA_save_postdata');
L'esempio sopra implementa l'hook tanto necessario. Come puoi vedere, il parametro tag usato in questo caso è save_post
per arrivare al punto in cui viene inviato il post, tutti gli elementi del modulo vengono inviati a PHP e salvati nel database, in modo che possiamo salvare i nostri dati esattamente quando il modulo viene inviato e WordPress lo elabora. La funzione di callback che fa tutto il lavoro è nominata pA_save_postdata
, creeremo questa funzione un po 'più avanti nel tutorial quando ci occuperemo di tutti gli aspetti della meta-box.
Poiché stiamo cercando di creare colonne aggiuntive nel nostro elenco di post page, dobbiamo compilare le righe con i dati di quelle nuove colonne. Per fare questo useremo il seguente codice:
add_action ('manage_posts_custom_column', 'pA_manage_posts_custom_column', 10, 2);
Il tag usato è manage_posts_custom_column
e la funzione di callback pA_manage_posts_custom_column
, funzione che costruiremo tra qualche istante.
Ultimo ma non meno importante, vogliamo aggiungere e rimuovere alcune colonne dall'elenco delle pagine dei post. Per fare ciò dobbiamo filtrare quelli esistenti e rimuovere o aggiungere come vogliamo chiamando un filtro come nel prossimo esempio:
add_filter ('manage_posts_columns', 'pA_manage_posts_columns');
Il filtro, proprio come le azioni hanno i parametri principali che usiamo, uno è il tag, in questo caso una stringa con il nome di '' manage_posts_columns
e una funzione di callback, anche come stringa ma con il nome di '' pA_manage_posts_columns
. Stiamo costruendo e utilizzando questa funzione in uno dei prossimi passi.
Poiché vogliamo creare una meta-box e abbiamo già impostato gli hook e le funzioni per ottenere un metodo di callback che lo genera, dobbiamo scrivere il codice per esso.
Per prima cosa daremo un'occhiata al pA_inner_custom_box
funzione. Questa funzione contiene al suo interno un codice molto semplice che genera e gestisce un modulo con i dati. Innanzitutto, ci sono 3 variabili $ pA_price
, $ pA_quantity
, e $ pA_currency
per mantenere i valori dei nostri 3 elementi che vogliamo inserire nella lista dei meta tag e dei post. Per fare questo, li otterremo dai campi personalizzati in cui li salveremo nel prossimo save_post
azione. Quindi creiamo i campi del modulo HTML che useremo per pubblicare i dati quando il post è aggiornato o pubblicato, ancora una volta, usando il save_post
funzione di callback. Tutto questo codice è disponibile completamente qui:
function pA_inner_custom_box () global $ post; $ pA_price = get_post_meta ($ post-> ID, 'pA_price', true); $ pA_quantity = get_post_meta ($ post-> ID, 'pA_quantity', vero); $ pA_currency = get_post_meta ($ post-> ID, 'pA_currency', vero); ?>
| |
moneta: | type = "radio" name = "pA-currency" value = "USD" /> USD / type = "radio" name = "pA-currency" value = "GBP" /> GBP / type = "radio" name = "pA-currency" value = "EUR" /> EUR |
Ora, in primo luogo, perché stiamo usando i campi personalizzati? Per una facile gestione e per qualsiasi futuro facile smistamento, filtraggio all'interno della query dei post. In secondo luogo, stiamo utilizzando due caselle di testo per ciascuno dei valori di prezzo e quantità e pulsanti di opzione con le opzioni USD, GBP e EURO per i valori di valuta. A ciascuno di questi elementi del modulo vengono dati i valori delle variabili che abbiamo precedentemente riempito con valori provenienti da specifici campi personalizzati.
Questo è tutto per questa parte, quando l'utente aggiorna o pubblica un post questi valori saranno inviati alla successiva funzione di callback del nostro tutorial.
La seconda e parte cruciale della funzionalità del meta-box è il salvataggio dei dati che stiamo inviando. All'inizio del tutorial abbiamo implementato una funzione che gestisce i dati inviati per posta. Ora daremo un'occhiata a come funziona la sua funzione di callback.
Primo, perché abbiamo bisogno di un modo per identificare il post che dobbiamo includere nella variabile globale $ postale
per ottenere il valore id del post attualmente inviato. Quindi controlleremo se una variabile nascosta che abbiamo creato come elemento del modulo è stata inviata o meno. Se è stato inviato, iniziamo ad estrarre i valori dei campi personalizzati dal database per ogni elemento a cui siamo interessati: prezzo, quantità e valuta. Useremo il get_post_meta
funzione per ottenere i valori della meta chiave del campo personalizzato usando $ Post-> ID
valore variabile come identificativo e il nome della meta chiave a cui siamo interessati. Abbiamo bisogno di questi valori per impostare il parametro del valore precedente nella prossima parte di codice da questa funzione che gestisce l'aggiornamento dei dati.
I dati vengono salvati come campi personalizzati con un nome metakey specifico pA_quantity
per quantità, pA_price
per prezzo e pAcurrency
per i valori di valuta. I nuovi dati vengono estratti dal $ _POST
variabile che contiene i dati inviati.
funzione pA_save_postdata () global $ post; if ($ _POST ['pA-hidd'] == 'true') $ pA_price = get_post_meta ($ post-> ID, 'pA_price', true); $ pA_quantity = get_post_meta ($ post-> ID, 'pA_quantity', vero); $ pA_currency = get_post_meta ($ post-> ID, 'pA_currency', vero); update_post_meta ($ post-> ID, 'pA_quantity', $ _POST ['pA-quantity'], $ pA_quantity); update_post_meta ($ post-> ID, 'pA_price', $ _POST ['pA-price'], $ pA_price); update_post_meta ($ post-> ID, 'pA_currency', $ _POST ['pA-currency'], $ pA_currency);
Questo conclude l'implementazione del meta box nel nostro plugin.
Finalmente abbiamo raggiunto la parte principale di questo tutorial, beh, almeno una delle parti principali. Dico parti principali perché questa prossima cosa è ciò che il tutorial è tutto, tuttavia, non può funzionare senza tutte le altre parti precedentemente fatte. Ora daremo un'occhiata a come rimuovere e aggiungere nuove colonne di post alla pagina dei post nel pannello di amministrazione.
Poiché abbiamo aggiunto valori aggiuntivi al post, ad esempio prezzi, valuta e quantità, vogliamo che in questa parte siano presenti colonne aggiuntive nella pagina dei post con questi nomi e i relativi valori. Puliamo un po 'le cose, in primo luogo, vogliamo rimuovere autore, tag e commenti dalle colonne come per lo scopo di questo tutorial, vogliamo imparare come fare questo e non abbiamo bisogno di quelle colonne poiché stiamo cercando di comportarci come la pagina dei post gestisce un prodotto con cose come prezzo e quantità.
function pA_manage_posts_columns ($ columns) global $ wp_query; unset ($ columns ['author'], $ columns ['tags'], $ columns ['comments']); $ totale = 0; foreach ($ wp_query-> post come $ post) $ total + = get_post_meta ($ post-> ID, 'pA_price', true) * get_post_meta ($ post-> ID, 'pA_quantity', vero); $ columns = array_merge ($ columns, array ('price' => __ ('price'), 'currency' => __ ('currency'), 'quantity' => __ ('quantity'), 'featured_image' => __ ('Immagine'), 'totale' => __ ('Totale:'. $ Totale))); restituire $ colonne;
Sembra abbastanza semplice, giusto? Ovviamente sto parlando della funzione di richiamata sopra per il manage_posts_columns
tag filtro che gestisce la gestione delle colonne di post, proprio come dice il nome. Ci sono solo poche righe di codice, ma questa parte è in realtà più complicata di qualsiasi altra parte precedente in questo tutorial (e quelle parti non sono così difficili, quindi questa non dovrebbe essere così difficile da capire).
In primo luogo, la funzione di callback del filtro precedentemente menzionato ha un parametro che contiene tutte le colonne al suo interno come una matrice. Stiamo impostando questo parametro sotto il nome $ colonne
in modo che possiamo usarlo in pochi istanti. Quindi abbiamo bisogno di integrare una variabile globale nella funzione, cioè $ WP_Query
. Lo useremo anche a breve.
Dal momento che il $ colonne
parametro è un array che contiene tutte le colonne della pagina dei post, tutto ciò che dobbiamo fare in questo caso è rimuovere i parametri dell'array che desideriamo. Per fare questo, usiamo semplicemente il unset
Funzione PHP e separiamo i nomi degli array che vogliamo rimuovere con le virgole. Facile.
Poiché utilizziamo il prezzo e la quantità come valori con cui lavoriamo dinamicamente, vogliamo fare un totale di quei valori in una speciale riga aggiuntiva che aggiungeremo in un momento. Per calcolare questo, dobbiamo estrarre i valori di tutti i prezzi e le quantità di ogni post, moltiplicarli e aggiungere i risultati. Il risultato sarà un totale di tutti i valori degli articoli dei post moltiplicati per la loro quantità. La somma di questo vogliamo postare nel titolo della colonna quando aggiungiamo la colonna nella parte successiva. Quindi recuperiamo i valori dei campi personalizzati di quantità e prezzo di ciascun post utilizzando il get_post_meta
funzione, e fare un totale usando un incrementato $ in totale
variabile. Per creare il ciclo con i nostri dati richiesti useremo l'integrato $ WP_Query
variabile globale.
Per aggiungere colonne, useremo l'approccio che abbiamo usato per rimuoverle solo in un modo diverso, vale a dire non il unset
funzione per rimuovere ma il array_merge
Funzione PHP per aggiungere le nuove colonne. Le colonne vengono aggiunte come matrici in questo ordine e con questi nomi: prezzo, valuta, quantità, immagine in evidenza e Totale.
Tutto ciò che resta da fare ora è restituire il $ colonne
variabile e la funzione di callback farà la sua magia. Il risultato finale è qualcosa che dovrebbe fare in modo che la pagina dei post abbia i titoli di head table in questo modo:
Il passaggio finale di questo tutorial riguarda i valori delle colonne personalizzate. Dopo aver creato le colonne in precedenza, dobbiamo mostrare i valori di tali prezzi, valute e così via, nella lista dei post dobbiamo aggiungere correttamente i valori corrispondenti dei valori personalizzati alla lista. Per fare questo useremo un hook precedentemente implementato che ha la funzione callback con il nome di pA_manage_posts_custom_column
. La funzione ha due parametri, un parametro di colonna contenente la tag name della colonna in cui ci troviamo, da noi utilizzati per identificare dove siamo e l'ID post come secondo parametro.
Per prima cosa abbiamo bisogno di una condizione di interruttore per controllare il $ colonna
variabile per il tipo di post in cui ci troviamo. Certo, siamo interessati solo alle nostre colonne create su misura, quindi metteremo i casi solo a quei valori.
Questi tre tipi di colonna che abbiamo creato hanno un tipo di dati meta chiave comune, una semplice stringa che è una colonna personalizzata che possiamo ottenere usando il get_post_meta
funziona con le variabili appropriate, più precisamente $ post_id
per identificare il post, la meta chiave per identificare il campo personalizzato e una variabile booleana impostata su true per ottenere i dati come una stringa echo o come una matrice.
C'è una colonna in più che abbiamo aggiunto che è un po 'diversa e non menzionata in precedenza. Sto parlando di featured_image
colonna che mostrerà il tag HTML dell'immagine in primo piano dal post all'interno della riga del post corrente. Per ottenere l'immagine in primo piano stiamo usando il get_post_thumbnail
funziona con l'id del post come identificativo e una stringa di dimensioni.
Un ultimo valore di colonna è il totale. Il totale di ogni post viene calcolato estraendo i campi personalizzati utilizzando lo stesso metodo di prima (get_post_meta
funzione) di prezzo e quantità e moltiplicandoli. Il totale è il risultato che stiamo cercando.
function pA_manage_posts_custom_column ($ column, $ post_id) switch ($ column) case 'price': $ pA_val = get_post_meta ($ post_id, 'pA_price', true); rompere; caso 'valuta': $ pA_val = get_post_meta ($ post_id, 'pA_currency', vero); rompere; caso 'quantità': $ pA_val = get_post_meta ($ post_id, 'pA_quantity', vero); rompere; case 'featured_image': if (ha_post_thumbnail ()) $ pA_val = get_the_post_thumbnail ($ post_id, 'miniatura'); rompere; case 'total': $ pA_price = get_post_meta ($ post_id, 'pA_price', true); $ pA_quantity = get_post_meta ($ post_id, 'pA_quantity', vero); $ pA_val = $ pA_price * $ pA_quantity; rompere;
L'esempio sopra è il modo in cui la funzione che abbiamo discusso in precedenza dovrebbe essere implementata per funzionare correttamente, è possibile controllare il codice sopra per capire questa sezione del tutorial. Come risultato visivo, a Hello World Post sono stati forniti alcuni valori per prezzo, valuta e quantità e una schermata di stampa casuale è stata caricata come immagine in primo piano. Con il nostro plugin installato, la pagina di amministrazione dei post è simile a questa:
WordPress sta diventando sempre più potente e flessibile con molte nuove funzionalità e possibilità che non solo non avevamo, ma non potremmo nemmeno renderci conto di quanto siano utili. Questo tutorial ha lo scopo di aiutarti a capire come gestire facilmente le colonne per i post nell'area dell'amministratore. Puoi scegliere di utilizzare queste informazioni come desideri per qualsiasi progetto tu possa pensare che possa renderlo utile. Pensa alle possibilità che puoi creare con questi semplici passaggi!
Quali sono alcune altre caratteristiche di WordPress sottovalutate che pensi che le persone spesso trascurino? Fateci sapere nei commenti!