Hai mai provato a costruire i metabox in WordPress? È un casino, non solo per i principianti ma anche per gli sviluppatori avanzati di WordPress. Fortunatamente per la comunità di WordPress, la comunità stessa può trovare soluzioni eleganti per questi tipi di problemi. CMB2 è uno di questi.
In questa parte della serie "Toolbox della serie Smart WordPress", passeremo a CMB2, una vasta libreria per lo sviluppo di metabox e moduli personalizzati in WordPress.
Poiché non si tratta di un tutorial sulla creazione di metabox personalizzati, non ho intenzione di insegnarti come farlo utilizzando le funzionalità di base, ma darò un paio di link utili. Invece, ho intenzione di andare oltre la routine banale di esso:
Creare il metabox: Indubbiamente, questa parte è essenziale e anche CMB2 usa un modo simile di farlo: devi creare il metabox personalizzato usando il add_meta_box ()
funzione ... all'interno di una funzione che si aggancia al add_meta_boxes
azione. Non troppo facile, non troppo difficile, ma tra i due.
Crea i campi da visualizzare nel metabox: In questa parte, devi creare una funzione separata (a cui devi fare riferimento anche in add_meta_box ()
funzione) e scrivere HTML vaniglia in esso, come div
s e etichetta
s e ingresso
s, per visualizzare i campi del modulo, che non funzionerà a meno che non si leghi l'HTML con PHP complicato. Gli input di testo vanno bene, ma creando dropdown o checkbox? Preparati a essere confuso. (Non farmi nemmeno iniziare su caricamenti di file e color picker.) Oh, hai dimenticato di usarlo wp_nonce_field ()
per sicurezza? Peccato, il tuo codice non funzionerà mai.
Disinfetta e salva i valori del campo: Si. Per fare in modo che il modulo memorizzi i dati, devi usare un'altra funzione per controllare un sacco di cose, disinfettare i dati e salvare i valori nel tuo metabox personalizzato. E devi agganciare quella funzione al save_post
azione. pulito.
Se vuoi farlo "il modo principale" e spendere ore sulla creazione di un paio di metabox, beh, fa bene a te, prendendo la strada maestra. Ma naturalmente, potrebbe arrivare un momento in cui non sarai in grado di utilizzare framework helper come CMB2. In tal caso, puoi fare riferimento a questo tutorial SitePoint di Narayan Prusty oa questa estesa serie di tutorial di Tom McFarlin su Tuts + Code.
E se ti dicessi che puoi creare metabox personalizzati creando una funzione che si agganci a un'azione, e usando funzioni molto intelligenti che fanno tutto il duro lavoro di creare l'HTML e legare magicamente tutto insieme? E credimi, non sto esagerando nemmeno un po '!
Con l'aiuto di CMB2, sarai in grado di creare metabox personalizzati in una frazione del tempo che impiegheresti per farlo "nel modo principale".
CMB2 si presenta in due forme: nella forma plugin e nella forma quadro. Se stai per utilizzare CMB2 in progetti che non verranno rilasciati per una comunità, ti suggerisco di utilizzare il plug-in, perché l'aggiornamento del plug-in CMB2 sarebbe molto più semplice e non dovrai includere i file del motore CMB2. Ma se hai intenzione di rilasciare il tuo progetto in una comunità, è meglio integrare CMB2 nel progetto scaricando i file da GitHub, inserendoli nella cartella del progetto e utilizzando le linee sottostanti in esso:
Naturalmente, tieni presente che devi modificare le linee sopra per puntare a CMB2 init.php
file.
Prima di creare il nostro primo metabox, dobbiamo creare la nostra unica funzione che si agganci al CMB2 stesso cmb2_init
azione:
Dopodiché, creare il metabox è facile come creare una nuova variabile:
'test_metabox', 'title' => 'Test Metabox', 'object_types' => array ('page', 'post', 'customposttype'), // post type 'context' => 'normal', // ' normal ',' advanced 'o' side 'priority' => 'high', // 'high', 'core', 'default' o 'low' show_names '=> true, // mostra i nomi dei campi a sinistra' cmb_styles '=> false, // false per disabilitare il foglio di stile CMB' closed '=> true, // mantiene il metabox chiuso per impostazione predefinita)); ?>
Dopo aver creato il nostro primo metabox personalizzato, è ora di renderlo utile popolandolo con "campi" forniti da CMB2. E farlo è semplice come eseguire una funzione con la variabile metabox appena creata:
add_field (array ('name' => 'Test Title', 'desc' => 'Questa è una descrizione del titolo', 'type' => 'title', 'id' => 'wiki_test_title')); // email input $ cmb-> add_field (array ('name' => 'Test Text Email', 'id' => 'wiki_test_email', 'type' => 'text_email',)); // file uploader $ cmb-> add_field (array ('name' => 'Test File', 'desc' => 'Carica un'immagine o inserisci un URL.', 'id' => 'wiki_test_image', 'type' => 'file', // Opzionalmente nasconde l'input di testo per l'url: 'options' => array ('url' => false,),)); // ricorda quando ho detto che fare un selettore di colori sarebbe stato molto difficile quando si utilizzavano le funzioni principali? $ cmb-> add_field (array ('name' => 'Test Color Picker', 'id' => 'wiki_test_colorpicker', 'type' => 'colorpicker', 'default' => '#ffffff',)); ?>
Esistono più di 30 tipi di campi forniti da CMB2, inclusi normali input di testo, editor WYSIWYG, selettori di date, selettori di colori, caricatori di file e persino selettori di tassonomia. Per un elenco completo dei tipi di campo, controlla questa pagina Wiki di CMB2.
Creare metabox personalizzati completamente funzionanti è fantastico, ma CMB2 non si ferma qui. Ci sono un sacco di cose che puoi fare con CMB2:
show_on
filtri e mostra o nasconde in modo condizionale i tuoi metabox.Per saperne di più sulle superpotenze di CMB2 come queste, ci sono alcune pagine che puoi controllare:
Non si può negare che attenersi al core di WordPress mentre si costruiscono roba non è sempre così semplice come sembra. Quindi, l'utilizzo di framework helper come CMB2 velocizzerà i nostri processi di sviluppo. E credo che anche se CMB2 è fantastico come adesso, ha molto più spazio per migliorare (non solo nell'area dei metabox personalizzati, ma anche in altre direzioni), quindi terrei d'occhio questo progetto se fossi in te.
Ci vediamo nella prossima parte dove andremo su WP-CLI, uno strumento WordPress unico nel suo genere che ci dà l'opportunità di gestire le nostre installazioni WordPress tramite la riga di comando.