Ați încercat vreodată să construiți metaboxi în WordPress? Este un dezastru, nu numai pentru începători, ci și pentru dezvoltatorii WordPress avansați. Din fericire pentru comunitatea WordPress, comunitatea însăși poate să vină cu soluții elegante pentru astfel de probleme dezordonate. CMB2 este unul dintre ele.
În această parte a seriei "Toolbox a dezvoltatorului inteligent WordPress", vom trece prin CMB2, o bibliotecă extensivă pentru dezvoltarea metaboxelor și formularelor personalizate în WordPress.
Deoarece acest lucru nu este un tutorial despre crearea metaboxelor personalizate, nu te voi învăța cum să o faci folosind funcționalitatea de bază - dar voi da câteva link-uri utile. În schimb, voi trece peste rutina lumească a lui:
Crearea metaboxului: Desigur, această parte esențială și chiar CMB2 folosește o modalitate similară de ao face - trebuie să creați metaboxul personalizat utilizând add_meta_box ()
funcția ... în cadrul unei funcții care cârlig la add_meta_boxes
acțiune. Nu prea ușor, nu prea tare, dar între cele două.
Creați câmpurile de afișat în metabox: În această parte, trebuie să creați o funcție separată (pe care trebuie să o faceți și în add_meta_box ()
funcția) și scrie HTML de vanilie în ea, cum ar fi div
și eticheta
și intrare
s, pentru a afișa câmpurile de formular, care nu va funcționa decât dacă legați codul HTML cu PHP complicat. Intrările de text sunt bune, dar se creează dropdown-uri sau casete de selectare? Pregătiți-vă pentru a obține confuzie. (Nici măcar să nu începi să înregistrez fișierele de încărcare și selectarea culorilor.) Oh, ai uitat să o folosești wp_nonce_field ()
pentru Securitate? Păcat, codul dvs. nu va funcționa niciodată.
Sanitizează și salvează valorile câmpului: Da. Pentru a face ca formularul să stocheze datele, trebuie să utilizați încă o altă funcție pentru a verifica o grămadă de lucruri, pentru a dezinstala datele și pentru a salva valorile în metabox personalizat. Și trebuie să cârlig această funcție la save_post
acțiune. ordinat.
Dacă doriți să faceți acest lucru "calea de bază" și să cheltuiți ore pe crearea a două metaboxe, bine, bine pentru tine, luând drumul cel mare. Dar, desigur, s-ar putea să veniți un timp în care pur și simplu nu veți putea folosi cadre de ajutor cum ar fi CMB2. În acest caz, vă puteți referi la acest tutorial SitePoint de Narayan Prusty sau această serie extinsă de tutoriale de Tom McFarlin pe Tuts + Code.
Și dacă ți-aș spune că poți crea metaboxuri personalizate creând o funcție care să creeze o singură acțiune și să folosești funcții foarte inteligente, care fac toată munca grea de a crea HTML-ul și leagă în mod magic toate lucrurile? Și crede-mă, eu nu exagerez nici măcar un pic!
Cu ajutorul CMB2, veți putea crea metaboxuri personalizate într-o fracțiune din timpul pe care l-ați cheltui pentru a le face "calea de bază".
CMB2 vine în două forme: în forma pluginului și în formularul cadru. Dacă intenționați să utilizați CMB2 în proiecte care nu vor fi lansate pentru o comunitate, vă sugerez să folosiți pluginul, deoarece actualizarea pluginului CMB2 ar fi mult mai ușoară și nu va trebui să includeți fișierele a motorului CMB2. Dar dacă veți lansa proiectul într-o comunitate, ar fi bine să integrați CMB2 în proiect prin descărcarea fișierelor de la GitHub, plasarea lor în dosarul proiectului și utilizarea liniilor de mai jos:
Bineînțeles, rețineți că trebuie să modificați liniile de mai sus pentru a indica CMB2 init.php
fişier.
Înainte de a crea primul nostru metabox, trebuie să ne creăm singura funcție care se va potrivi cu cea a lui CMB2 cmb2_init
acțiune:
După aceea, crearea metaboxului este la fel de ușor ca crearea unei noi variabile:
'test_metabox', 'title' => 'Test Metabox', 'object_types' => array ('page', 'post', 'customposttype' normal ',' avansat 'sau' lateral 'prioritar' => 'high', // 'high', 'core', 'default' cmb_styles '=> false, // false pentru a dezactiva foaia de stiluri CMB' closed '=> true, // păstrează metabox-ul închis în mod implicit)); ?>
După crearea primului nostru metabox personalizat, este timpul să îl folosim populând-o cu "câmpurile" pe care le oferă CMB2. Și făcând acest lucru este la fel de simplu ca funcționarea unei funcții cu variabila metabox pe care tocmai am creat-o:
add_field (array ('name' => 'Test Title', 'desc' => 'Aceasta este o descriere a titlului', 'type' => 'title', 'id' => 'wiki_test_title')); // introduceți adresa de e-mail $ cmb-> add_field (array ('name' => 'Test Text Email', 'id' => 'wiki_test_email', 'type' => 'text_email');); // file uploader $ cmb-> add_field (array ('name' => 'Fișier de test', 'desc' => 'Încărcați o imagine sau introduceți o adresă URL.', 'id' => 'fișier', // ascunde opțional textul pentru url: 'opțiuni' => array ('url' => false,)); / / amintiți-vă când am spus că a face un picker de culoare ar fi foarte greu atunci când se utilizează funcții de bază? $ cmb-> add_field (array ('name' => 'Test Color Picker', 'id' => 'wiki_test_colorpicker', 'type' => 'colorpicker', 'default' => '#ffffff';)); ?>
Există mai mult de 30 de tipuri de câmp furnizate de CMB2, incluzând intrări de text obișnuite, editoare WYSIWYG, elemente de selectare a datelor, elemente de selectare a culorilor, dispozitive de încărcare a fișierelor și chiar selectori de taxonomii. Pentru o listă completă a tipurilor de câmpuri, consultați această pagină Wiki a CMB2.
Crearea metaboxelor personalizate pe deplin funcționale este minunat așa cum este, dar CMB2 nu se oprește acolo. Există o mulțime de lucruri pe care le puteți face cu CMB2:
show_on
filtrează și afișează sau ascunde în mod condiționat metaboxele tale.Pentru a afla mai multe despre super puterile CMB2 ca acestea, există câteva pagini pe care le puteți verifica:
Nu există nici o îndoială că lipirea în nucleul WordPress în timp ce construirea de lucruri nu este întotdeauna la fel de simplă pe cât pare. Deci, folosirea cadrelor de ajutor cum ar fi CMB2 va accelera procesele noastre de dezvoltare. Și cred că, deși CMB2 este la fel de minunat ca acum, are mult mai mult spațiu de îmbunătățire (nu doar în domeniul metaboxelor personalizate, ci și în alte direcții, de asemenea), așadar, dacă aș fi fost tu.
Vedeți în partea următoare unde vom trece peste WP-CLI, un instrument WordPress unic, care ne oferă posibilitatea de a gestiona instalările WordPress prin intermediul liniei de comandă.