WordPress offre il modulo Modifica rapida per gestire le informazioni sui termini della tassonomia? che è grandioso, ma cosa succede se si desidera modificare più del proprio nome e slug? Questo tutorial spiegherà come estendere questa meravigliosa funzione di WordPress per aggiornare più delle basi.
La funzione Modifica rapida in WordPress è un semplice strumento utilizzato per consentire agli utenti di modificare parti di dati associate a post, pagine e termini senza il fastidio di navigare in una pagina separata prima di modificare i dati. L'uso di Quick Edit è onnipresente in tutto WordPress e questo tutorial insegnerà ai lettori come sfruttare la potenza di questa funzione da utilizzare con termini di tassonomia. Dopo aver eseguito i seguenti cinque passaggi, sarai in grado di aggiungere con successo i metadati dei termini della tassonomia tramite il pannello Modifica rapida in WordPress.
Per dimostrare come aggiungere metadati termine tassonomia con Quick Edit, lavorerò attraverso un esempio di allegare metadati ai termini in una tassonomia "president" nel contesto di un plugin. Per questo esempio, l'obiettivo principale sarà quello di allegare due pezzi di metadati a ciascun termine di tassonomia del presidente: data di inizio e data di fine. Una tassonomia presidenziale può essere utile per un blogger politico che desidera classificare i post di presidenti discussi.
Per questo esempio, creerò un plugin che utilizza la seguente directory e struttura di file:
La cartella principale "quick-edit" dovrebbe essere collocata nella cartella plugins per essere utilizzata come plugin. Crea questa struttura di file per preparare il resto del tutorial. Se fatto correttamente, la struttura del file dovrebbe assomigliare alla seguente immagine.
Per assicurarsi che WordPress riconosca il plug-in come plug-in, è necessario aggiungere le informazioni di intestazione del plug-in standard. Aggiungere il seguente commento nella parte superiore di "quick-edit.php" permetterà al plugin di essere riconosciuto da WordPress.
Dopo aver aggiunto le informazioni dell'intestazione, attiva il plugin attraverso la pagina dei plugin di WordPress. Il plug-in di esempio è tutto configurato e pronto per il resto del tutorial.
Prima di aggiungere il modulo di modifica rapida, la tassonomia del presidente deve essere registrata e WordPress deve essere preparato per gestire i metadati termine. La registrazione delle tassonomie personalizzate non sarà trattata in questo tutorial in modo approfondito in quanto è stata affrontata in altri punti. Per il presente esempio, è necessario registrare una tassonomia del "presidente". Questa operazione sarà completata con la funzione "register_taxonomy".
function my_taxonomies () // Aggiungi nuova tassonomia, rendila gerarchica (come le categorie) $ labels = array ('name' => _x ('Presidents', 'taxonomy general name', 'my_plugin'), 'singular_name' => _x ('President', 'taxonomy singular name', 'my_plugin'), 'search_items' => __ ('Cerca presidenti', 'my_plugin'), 'all_items' => __ ('Tutti i presidenti', 'my_plugin') , 'parent_item' => __ ('Parent President', 'my_plugin'), 'parent_item_colon' => __ ('Parent President:', 'my_plugin'), 'edit_item' => __ ('Modifica Presidente', 'my_plugin '),' update_item '=> __ (' Update President ',' my_plugin '),' add_new_item '=> __ (' Aggiungi nuovo presidente ',' my_plugin '),' new_item_name '=> __ (' Nuovo nome presidente ') , 'my_plugin'), 'menu_name' => __ ('Presidents', 'my_plugin'),); register_taxonomy ('president', array ('post'), array ('hierarchical' => true, 'labels' => $ labels, 'show_ui' => true, 'query_var' => true, 'rewrite' => array ('slug' => 'presidente'))); add_action ('init', 'my_taxonomies', 10, 1);
Questo snippet di codice crea una nuova tassonomia personalizzata di tipo "presidente". La tassonomia è specificata per funzionare con il tipo di post "post" ed è una tassonomia gerarchica simile alla tassonomia "categoria" integrata. Per iniziare, popola la tassonomia dei presidenti con gli ultimi tre presidenti degli Stati Uniti:
Se tutto è andato bene a questo punto, dovresti avere un link per "Presidenti" nel menu "Messaggi" e dovresti avere una tabella di elenchi di termini che assomiglia alla seguente immagine.
Sebbene questo lavoro non abbia fatto nulla per il compito di abilitare Quick Edit per i meta dati a termine, ha impostato una tassonomia con cui lavorare in questo esempio.
Il prossimo compito è preparare WordPress per gestire i meta dati del termine. In WordPress 2.9, un insieme di funzioni utili sono state aggiunte al core di WordPress che ha posto la maggior parte delle basi per la gestione dei meta termine. Le funzioni "add_metadata", "update_metadata" e "get_metadata" abilitato un metodo semplice per gestire meta termine; tuttavia, queste funzioni forniscono solo una parte della soluzione. Per aggiungere meta termine, è necessario prima aggiungere una tabella al database WordPress per queste funzioni per gestire i dati.
Fortunatamente, Jacob Goldman ha scritto un meraviglioso plugin, Simple Term Meta, che gestisce questo compito, oltre a fornire agli sviluppatori utili funzioni (ad es. "Add_term_meta", "update_term_meta", "get_term_meta") per gestire la gestione dei meta termine. In sostanza, questo plugin aggiunge una API di metadati termine tassonomia al sistema WordPress. Come dice il signor Goldman:
"WordPress offre supporto per metadati per post, utenti e commenti, ma manca il meta supporto per i termini di tassonomia (tag, categoria o termini di tassonomia personalizzati)! Questo plug-in aggiunge un supporto completo ed efficiente per il termine meta basato sul post metal framework costruito in WordPress. Aggiunge una tabella 'postmeta' e pubblica meta funzioni che dovrebbero essere familiari a chiunque abbia lavorato con WordPress post meta. "
Per il presente esempio, questo plugin deve essere installato per funzionare con meta termine. Prima di procedere, assicurati di scaricare e installare Simple Term Meta. Con questo plugin installato, è ora di iniziare a codificare il modulo di modifica rapida.
"Per una discussione estesa sulla gestione del termine meta utilizzando Simple Term Meta e creando un'interfaccia utente per aggiungere e modificare i metadati termine tassonomia, consultare il mio articolo 'Aggiunta di metadati a termini di tassonomia'."
Nell'immagine precedente della pagina di tassonomia presidenti, si noti che ci sono quattro colonne nella tabella elenco termini: Nome, Descrizione, Slug e Post. In definitiva, il nostro plug-in allegherà una data di inizio e una data di fine a ciascun presidente. Come con gli altri dati relativi ai termini, la data di inizio e la data di fine dovrebbero essere visualizzate in questa tabella. Questo obiettivo può essere facilmente realizzato con alcuni filtri WordPress.
Prima di tutto, verranno aggiunte le intestazioni
function my_column_header ($ columns) $ columns ['start-date'] = __ ('Start Date', 'my_plugin'); $ columns ['end-date'] = __ ('End Date', 'my_plugin'); restituire $ colonne; add_filter ('manage_edit-president_columns', 'my_column_header', 10, 1);
Usando il gestire _ $ screen-> id _columns
filtro, due colonne extra vengono aggiunte alla tabella dell'elenco dei termini. Il gestire _ $ screen-> id _columns
filtro invia un argomento alla funzione di callback my_column_header
. Questo argomento $ colonne
è una matrice di colonne per la schermata corrente.
Semplicemente aggiungendo elementi alla matrice e restituendo quella matrice, nuove colonne verranno aggiunte alla tabella dell'elenco dei termini. Il filtro gestire _ $ screen-> id _columns
è un filtro variabile in quanto il nome effettivo del filtro cambia a seconda della schermata corrente visualizzata. Nel caso di visualizzazione di una pagina di gestione della tassonomia, la parte variabile del filtro inizierà con "edit-" e terminerà con il nome della tassonomia corrente. Dato che stiamo aggiungendo alla tassonomia del presidente, questo valore è "presidente", che è stato specificato quando la tassonomia è stata inizialmente definita. Utilizza i seguenti filtri per le tassonomie WordPress standard:
Ora che le colonne vengono aggiunte, le colonne devono essere preparate per visualizzare il termine meta per i singoli termini, che viene eseguito con il successivo snippet di codice.
function my_column_value ($ empty = ", $ custom_column, $ term_id) return esc_html (get_term_meta ($ term_id, $ custom_column, true)); add_filter ('manage_president_custom_column', 'my_column_value', 10, 3);
Il termine meta-valore è aggiunto dal gestire _ $ schermo-> tassonomia _custom_column
filtro. La parte variabile di questo filtro si riferisce alla tassonomia corrente, che, in questo caso, è "presidente". Il gestire _ $ schermo-> tassonomia _custom_column
filtro accetta tre argomenti:
$ vuoto
: un argomento deprecato che dovrebbe essere lasciato vuoto$ custom_column
: il nome della colonna corrente (ad esempio "data di inizio", "data di fine")$ term_id
: l'id del termine attuale della tassonomiaGli ultimi due argomenti sono usati per trovare il valore del termine meta-valore di interesse. Più avanti nel tutorial, la "data di inizio" e "data di fine" saranno aggiunte al database usando il add_term_meta
funzione dal termine meta API fornito dal plugin Simple Term Meta. I valori verranno memorizzati con i tasti "data di inizio" e "data di fine". Il get_term_meta
la funzione prende la chiave e il termine id come argomenti per individuare il valore meta appropriato.
Ovviamente, $ term_id inviato a my_column_value
function è il termine id necessario e viene quindi utilizzato per l'argomento $ term_id nel file get_term_meta
funzione. Fortunatamente, in questo caso, il $ column_name
variabile è identica alla chiave per il termine meta. Come tale, è usato come secondo argomento nel get_term_meta
funzione.
Infine, la chiamata al get_term_meta
la funzione è avvolta nel esc_html
funzione, che è una funzione di formattazione di base di WordPress che sfugge all'HTML sul display.
A questo punto del tutorial, questo codice restituirà una stringa vuota perché non è ancora stato impostato alcun termine meta. Una volta aggiunte queste date, queste verranno visualizzate nella riga e nella colonna corrette nella tabella dell'elenco dei termini. Con i due snippet precedenti aggiunti, il termine list table sta iniziando a prendere forma.
Ora che le colonne sono impostate, è il momento di aggiungere al modulo di modifica rapida in preparazione per aggiungere meta termine ai termini.
L'aggiunta di contenuto al modulo di modifica rapida è la parte più semplice di questo tutorial; tuttavia, ci sono alcune potenziali insidie se non si presta attenzione. Il quick_edit_custom_box
l'azione consente un facile accesso per aggiungere campi aggiuntivi al modulo di modifica rapida. La seguente funzione aggiunge i campi personalizzati al modulo Modifica rapida
function my_quick_edit_custom_box ($ column_name, $ screen, $ name) if ($ name! = 'president' && ($ column_name! = 'start-date' || $ column_name! = 'end-date')) restituisce false; ?>
Prima di saltare nella spiegazione di questa funzione, fare clic su uno dei collegamenti "Modifica rapida" nella pagina di tassonomia presidenti. Dovresti vedere qualcosa di simile alla seguente immagine.
Il concetto base con questa funzione e azione è abbastanza semplice. Per ogni colonna che viene aggiunta tramite gestire _ $ screen-> id _columns
filtro, il quick_edit_custom_box
è chiamato. Ciò consente di aggiungere campi modulo personalizzati (o qualsiasi contenuto pertinente) per ogni colonna definita.
È importante notare a questo punto che se non hai aggiunto nessuna colonna alla tabella dell'elenco dei termini, non sarai in grado di aggiungere alcun contenuto tramite il quick_edit_custom_box
azione.
Il quick_edit_custom_box
accetta tre argomenti:
$ column_name
: la chiave per il valore aggiunto nel my_column_header
funzione$ schermo
: la schermata correntenome $
: nome della tassonomia correnteNel my_quick_edit_custom_box
, solo il $ column_name
e nome $
argomenti sono utilizzati. Innanzitutto, viene eseguito un controllo per garantire che i campi vengano stampati solo nel contesto corretto. Se la tassonomia corrente non è "presidente", i campi non dovrebbero essere visualizzati.
Successivamente, i campi dovrebbero essere visualizzati solo quando quick_edit_custom_box
l'azione viene eseguita per la colonna "data di inizio" o "data di fine". In quanto tale, l'istruzione condizionale controlla che la colonna sia uno di questi due valori. Questo passaggio è importante per garantire che i campi non vengano generati per colonne impreviste. Ad esempio, la tassonomia "link_category" integrata ha una colonna aggiuntiva chiamata "link". Quando si utilizza questo filtro su quella tassonomia e non si verificano le colonne specifiche aggiunte all'elenco delle colonne, verrà stampato un campo aggiuntivo. Si noti che i campi standard "nome", "descrizione" e "slug" non chiamano il quick_edit_custom_box
.
Ora che viene verificato il contesto appropriato, viene stampato il campo modulo. Il valore del $ column_name
variabile ci consente di determinare il contesto dell'uso corrente di quick_edit_custom_box
azione.
In quanto tale, può essere utilizzato per impostare l'etichetta e il campo del nome. Dato che le nostre chiavi di colonna, "data di inizio" e "data di fine" saranno le stesse delle chiavi utilizzate per il termine meta, la $ column_name
la variabile viene utilizzata per l'attributo nome nel campo di immissione del testo. Si noti che questa funzione viene eseguita una volta per ogni colonna definita. La prima volta che viene chiamato, il campo "Data di inizio" verrà generato con l'etichetta appropriata. Alla seconda esecuzione, il campo "Data fine" verrà generato con l'etichetta appropriata.
Per mantenere il markup coerente con il modulo esistente, ho semplicemente copiato l'HTML usato per i campi standard di WordPress e incollato nel my_quick_edit_custom_box
funzione. Ciò conferirà alla forma risultante un aspetto e una sensazione coerenti. Il valore per il campo non è impostato a questo punto.
Questo modulo viene generato come un modulo "fittizio" che verrà clonato e inserito ogni volta che si fa clic sul collegamento "Modifica rapida". Quando viene cliccato il link "Quick Edit", una funzione javascript popolerà il campo con il valore corrente se ne viene impostato uno. Se si visualizza il codice sorgente per la pagina di tassonomia presidenti, il modulo di modifica rapida si trova vicino alla chiusura Con i campi tutti pronti per partire, il passo successivo è salvare i valori nel database. Il salvataggio della data di inizio e della data di fine dei termini del presidente richiederà l'utilizzo di una funzione fornita da Simple Term Meta, La seguente funzione salverà sia la data di inizio che la data di fine quando il termine è aggiornato. Alcune cose dovrebbero essere notate con questa funzione. Prima di tutto, prima di inviare i dati, la funzione verifica che il file Il Sto solo facendo una sanitizzazione dei dati molto basilare per ricordare ai lettori che la sanitizzazione e la validazione dei dati sono molto importanti; tuttavia, non affronto ulteriormente questo problema qui per rimanere in attività e non confondere il problema con le routine di convalida complesse. Pertanto, consiglio di leggere alcuni articoli sul problema se non si ha familiarità con la convalida e la disinfezione dei dati. Semplicemente aggiungendo questa funzione al file non si completerà l'operazione di salvataggio di questi dati; la funzione deve essere eseguita utilizzando un hook di WordPress. Dal momento che l'idea è di eseguire questa funzione quando un termine viene aggiornato, il Con il Prima di fare il giro della vittoria per questo compito, è importante notare che la soluzione, così com'è, è carente di una funzionalità di usabilità critica. Più in particolare, per un termine con la data di inizio e la data di fine aggiunte, i valori non vengono compilati nel campo modulo quando viene richiamato Quick Edit. Ho accennato a questo prima nel passaggio 3 quando ho affermato che i valori per il campo modulo non vengono aggiunti quando viene creato il modulo; piuttosto, vengono popolati usando Javascript quando viene richiamato Quick Edit. La prepopolazione di questi campi modulo è un'aggiunta importante per gli utenti poiché rende l'aggiornamento dei dati molto semplice, soprattutto quando vengono creati errori di battitura. Per pre-compilare i campi, jQuery verrà utilizzato per determinare quali valori vanno in quali campi. Per capire come WordPress gestisce le colonne standard, ti consiglio di dare un'occhiata al metodo "edit" nel file "inline-edit-tax-dev.js" che si trova nella directory "wp-admin / js /" di Core di WordPress. Usando questo codice come guida, ho sviluppato la seguente funzione per inserire i valori esistenti nei campi del modulo quando viene richiamato Quick Edit. Aggiungi questa funzione al file "js / quick-edit.js" che hai creato nel primo passaggio dell'esercitazione. Passiamo attraverso questo codice per capire cosa sta succedendo. All'interno della chiamata a jQuery Guardando indietro alla terza riga della funzione jQuery, si può vedere che quando si fa clic sull'istanza corrente del collegamento Modifica rapida, che ha la classe "editinline", la funzione tenta di trovare la riga della tabella padre ( Il testo dell'elemento corrispondente viene restituito e assegnato a Se si guarda indietro all'HTML scritto per il modulo Quick Edit che è stato aggiunto usando il Ora che questa funzione è stata scritta e aggiunta al file "quick-edit.js", deve essere accodata usando Questa funzione prima controlla il contesto corrente per determinare se è necessario il Javascript. Se la pagina è "edit-tags.php", la tassonomia corrente è "presidente" e il parametro "azione" non è impostato (cioè la pagina non è la pagina di termini di modifica), il file Javascript viene aggiunto agli script coda. Uno dei più grandi pet peeves tra la comunità di sviluppo di WordPress non è attento a dove vengono aggiunti i file Javascript e CSS. Poiché questo script è necessario solo quando l'utente si trova sulla pagina di tassonomia presidenti, viene aggiunto solo allora. Il resto della funzione registra lo script e lo aggiunge usando Il presente tutorial ti ha insegnato come utilizzare la funzione di modifica rapida nella tabella di elenchi dei termini per aggiungere contenuto per modificare i metadati dei termini. Con questa strategia, puoi aggiungere i tuoi elementi all'area Quick Edit nel tuo prossimo plugin o tema. Va notato che se si utilizza Quick Edit, si dovrebbe anche avere un modo per aggiungere e modificare i campi normalmente tramite l'aggiunta e modifica delle pagine dei termini di tassonomia. Puoi trovare alcuni fantastici tutorial su questo argomento e combinare le tue conoscenze acquisite in questo tutorial per creare un modo eccellente e utilizzabile per gli utenti di gestire i metadati dei termini della tassonomia. Infine, voglio dare un ringraziamento speciale a Rarst per aver dato un'occhiata al mio codice per questo tutorial prima di pubblicarlo!
Passaggio 4 Salvataggio dei dati del modulo
update_term_meta
. Questa funzione funziona in modo simile alla funzione utilizzata per salvare post meta, update_post_meta
. La principale differenza, ovviamente, è che il update_term_meta
la funzione salva i dati per i termini, al contrario dei post. Questa funzione richiede quattro argomenti, tre dei quali verranno utilizzati nella presente implementazione della funzione:
$ term_id
: id del termine con cui sono associati i metadati$ meta_key
: nome del valore dei metadati$ meta_value
: valore per i metadati$ prev_value
: valore precedente dei metadati; aiuta a distinguere tra due pezzi di metadati con identico term_id e meta_key function my_save_term_meta ($ term_id) $ allowed_html = array ('b' => array (), 'em' => array (), 'i' => array (), 'strike' => array (), 'strong '=> array (),); if (isset ($ _ POST ['start-date'])) update_term_meta ($ term_id, 'start-date', wp_kses ($ _ POST ['start-date'], $ allowed_html)); if (isset ($ _ POST ['end-date'])) update_term_meta ($ term_id, 'end-date', wp_kses ($ _ POST ['end-date'], $ allowed_html));
$ _POST
la matrice contiene il valore previsto. Se esiste, il termine metadati viene aggiornato. Se al momento non esiste alcun termine meta data per il termine con la chiave specificata, viene creato un nuovo valore. Il update_term_meta
gestirà la determinazione della necessità di aggiungere o aggiornare una voce nella tabella. $ term_id
il valore che viene passato alla funzione è l'id del termine corrente e, pertanto, viene inviato a update_term_meta
funzione insieme al meta key ("start-date") e il meta valore ('$ _POST [ 'start-date']
'). Per inciso, sarebbe un peccato mortale non convalidare questi dati prima di inviarli al database. In questo esempio, io uso wp_kses
con i tag HTML di base autorizzati a disinfettare i tag HTML durante il salvataggio nel database. edited_ $ tassonomia
il gancio è il gancio appropriato per il lavoro. Il $ tassonomia
porzione dell'amo è una variabile che prende il nome della tassonomia che si sta modificando. Per questo esempio, questo hook verrà utilizzato utilizzando edited_president
. Lo snippet seguente chiamerà il my_save_term_meta
al momento opportuno. add_action ('edited_president', 'my_save_term_meta', 10, 1);
my_save_term_meta
scritto ed eseguito sul edited_president
hook, i dati dovrebbero essere salvati nel database e dovrebbe apparire nelle colonne corrette. Se tutto funziona come dovrebbe, i risultati dovrebbero assomigliare all'immagine seguente. Passaggio 5 Pre-compilazione dei campi modulo
jQuery (document) .ready (function () jQuery ('. editinline'). live ('clic', function () var tag_id = jQuery (this) .parents ('tr'). attr ('id') ; var start_date = jQuery ('. start-date', '#' + tag_id) .text (); var end_date = jQuery ('. end-date', '#' + tag_id) .text (); jQuery (' : input [name = "start-date"] ',' .inline-edit-row '). val (start_date); jQuery (': input [name = "end-date"] ',' .inline-edit- riga '). val (end_date); return false;););
pronto
funzione, la seconda riga assegna un evento "clic" a ciascun collegamento Modifica rapida. La terza riga tenta di trovare l'id della riga della tabella corrente nella tabella dell'elenco dei termini. Questo valore ID è necessario per i selettori jQuery contestuali più avanti nella funzione. L'estrazione dell'HTML dalla tabella dell'elenco dei termini è simile alla seguente (Nota: numerose righe sono state rimosse per la leggibilità e per illustrare il concetto):
? ? ? 20 gennaio 1993 20 gennaio 2001 genitori ( 'tr')
) e, una volta localizzato, ottiene il suo id. In questo caso, il tag_id
la variabile sarà "tag-33". Con quel valore id in mano, la quarta riga della funzione jQuery cerca la classe "start-date" nel contesto della riga della tabella che ha un id che è equivalente al tag_id
variabile. data d'inizio
variabile. In questo caso, il testo nella cella della tabella con la classe "start-date" che si trova nella riga della tabella con ID "tag-33" è "January 20, 1993", la data di inizio che stiamo cercando di trovare. La riga successiva di codice rispecchia questo processo per il valore della data di fine. Poiché questi valori sono stati individuati, il passaggio successivo consiste nell'utilizzarli per popolare i campi appropriati. La sesta riga della funzione jQuery fa proprio questo. Cerca di localizzare un input con l'attributo name "start-date" che fa parte dell'elemento che ha classe "inline-edit-row" (jQuery (': input [name = "start-date"]', '.inline-edit-row')
). quick_edit_custom_box
hook, vedrai che è stato creato un input con il nome "start-date" all'interno di a div
con classe "inline-edit-row". Questa riga di jQuery corrisponderà a questo input e imposterà il valore dell'attributo "valore" sulla stringa di testo contenuta nel file data d'inizio
variabile. In questo caso, l'input con il nome uguale a "start-date" avrà l'attributo "value" impostato su "January 20, 1993". Gli stessi passaggi vengono quindi eseguiti per "end-date" e tale campo di input verrà popolato in modo simile.wp_enqueue_script
. La seguente funzione e azione aggiunge lo script al capo
sezione dell'HTML quando viene caricata la pagina di tassonomia presidenti. function my_add_admin_scripts () global $ pagenow; if ($ pagenow == 'edit-tags.php' && (isset ($ _ GET ['tassonomia']) && $ _GET ['tassonomia'] == 'presidente') &&! isset ($ _ OTTIENI ['azione'] )) wp_register_script ('quick-edit-js', plugins_url ('/ js / quick-edit.js', __FILE__), array ('jquery')); wp_enqueue_script ( 'quick-edit-js'); add_action ('admin_enqueue_scripts', 'my_add_admin_scripts', 10, 1);
wp_enqueue_script
. Infine, questa funzione viene eseguita sull'azione "admin_init", che viene eseguita all'inizio del processo di caricamento delle pagine all'interno del pannello di amministrazione di WordPress. Se tutto viene eseguito correttamente, i campi del modulo devono essere compilati quando si fa clic sui collegamenti "Modifica rapida".
Conclusione