Una dintre caracteristicile principale oferite de WordPress în extinderea funcționalității sale este Meta Box API. Aceste meniuri vă permit să adăugați cu ușurință date suplimentare în conținutul dvs. De exemplu, Etichete postate Cutia meta vă permite să setați etichete pentru postarea dvs..
În acest articol, vom construi un plugin SEO de bază care adaugă o descriere meta, și un titlu Open Graph și o descriere de tag la cap
element al paginilor WordPress. În acest sens, vom afla, de asemenea, cum să creați o cutie meta personalizată, cum să dezinstalați datele furnizate de utilizator, cum să salvați datele într-o postare sau într-o pagină și cum să preluați și să recuperați datele salvate.
Pentru că nu voi explica fiecare bit din ceea ce codurile folosesc în acest tutorial, este o cunoaștere de bază a meta-boxes și ceea ce fac funcțiile PHP este presupusă. Dacă nu sunteți familiarizat cu elementele de bază, atunci un început minunat în Cum să creați Custom WordPress Write / Meta Boxes.
În primul rând, trebuie să decidem unde să apară meta-caseta.
În pluginul nostru, caseta meta va fi adăugată în post
și pagină
ecran. Pentru a realiza acest lucru, se creează o funcție care conține o variabilă care stochează o matrice de unde să se afișeze caseta meta și a pentru fiecare
buclei care se leagă prin matrice și se adaugă caseta meta la ecranul dat folosind add_meta_box
funcţie.
Și, în final, funcția este dependentă de add_meta_boxes
acțiune.
funcția tes_mb_create () / ** * @array $ screens Scrieți ecranul pe care să afișați caseta meta * @values post, pagină, tablou de bord, link, atașament, custom_post_type * / $ screens = array ); forex (ecranele $ ca $ ecran) add_meta_box ('tes-meta', 'Listing Motorul de căutare', 'tes_mb_function', ecranul $, 'normal', 'mare'); add_action ('add_meta_boxes', 'tes_mb_create');
Alternativ, puteți adăuga un dublu add_meta_box
funcția de a include caseta de meta atât la post și ecranul de pagină, cum ar fi:
funcția tes_mb_create () add_meta_box ('tes-meta', 'Listing Motorul de căutare', 'tes_mb_function', 'post', 'normal', 'mare'); add_meta_box ('tes-meta', 'Listing Engine Listing', 'tes_mb_function', 'page', 'normal', 'high'); add_action ('add_meta_boxes', 'tes_mb_create');
Din codul de mai sus, funcția de apel invers pentru a imprima codul HTML pentru secțiunea de editare este menționată ca tes_mb_function
care este al treilea argument add_meta_box
funcţie.
În plugin-ul nostru, codificăm doar două câmpuri de formă HTML pentru a gestiona datele titlului și descrierii.
funcția tes_mb_function ($ post) / / regăsirea valorilor metadatelor dacă acestea există $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); // Adăugați un câmp nonce pentru a putea verifica mai târziu când validarea wp_nonce_field ('tes_inner_custom_box', 'tes_inner_custom_box_nonce'); echo "„;
Etichetă titlu: Meta Descriere:
Explicația tes_mb_function
codul de mai sus este următorul:
În acest moment, ar trebui să vedeți caseta de meta în ecranul postului și al paginii.
O casetă de meta nu este completă până când nu îi poate salva datele în baza de date. Numele funcției care va gestiona salvarea datelor va fi tes_mb_save_data
. Codul său este după cum urmează.
funcția tes_mb_save_data ($ post_id) / * * Avem nevoie să verificăm că a venit de pe ecranul nostru și cu o autorizație corespunzătoare, deoarece save_post poate fi declanșată în alte momente. * / // Verificați dacă este setat nonce. dacă (! isset ($ _POST ['tes_inner_custom_box_nonce'])) returnați $ post_id; $ nonce = $ _POST ['tes_inner_custom_box_nonce']; // Verificați dacă nonce este valid. dacă (! wp_verify_nonce ($ nonce, 'tes_inner_custom_box')) returnați $ post_id; // Dacă aceasta este o salvare automată, formularul nostru nu a fost trimis, deci nu vrem să facem nimic. dacă (definit ('DOING_AUTOSAVE') && DOING_AUTOSAVE) returnați $ post_id; // Verificați permisiunile utilizatorului. dacă ('page' == $ _POST ['post_type']) if (! current_user_can ('edit_page', $ post_id)) returnează $ post_id; altceva if (! current_user_can ('edit_post', $ post_id)) returnați $ post_id; / * OK, sigur pentru noi să salvăm datele acum. * / // Dacă există intrări vechi, recuperați-le $ old_title = get_post_meta ($ post_id, '_tes_meta_title', true); $ old_description = get_post_meta ($ post_id, '_tes_meta_description', true); // Sintetizează intrarea utilizatorului. $ title = sanitize_text_field ($ _POST ['tes_meta_title']); $ description = sanitize_text_field ($ _POST ['tes_meta_description']); // Actualizați câmpul meta din baza de date. update_post_meta ($ post_id, '_tes_meta_title', $ titlu, $ old_title); update_post_meta ($ post_id, '_tes_meta_description', $ description, $ old_description); add_action ('save_post', 'tes_mb_save_data');
Să examinăm codul de mai sus:
save_post
poate fi declanșată în alte momente și, de asemenea, să se verifice dacă nonce setat anterior în tes_mb_function
este valabil.$ old_title
și $ old_description
variabil. Facem acest lucru pentru că update_post_meta
Funcția care salvează datele în baza de date necesită opțional o verificare a unei vechi valori înainte de a actualiza rândul bazei de date meta-box cu noile valori.sanitize_text_field
funcția care convertește HTML în entitatea sa, elimină toate etichetele, elimină pauzele de linie, filele și spațiul alb suplimentar, octeții de benzi.update_post_meta
.tes_mb_save_data
este conectat la save_post
acțiune pentru a salva datele din căsuța meta după ce postarea sau pagina este actualizată.Nu uitați că datele salvate vor fi folosite pentru a adăuga un titlu și o descriere Open Graph, precum și o etichetă meta descriptivă în cap
element al fiecărei pagini.
Pentru a face acest lucru, vom crea o funcție numită tes_mb_display
care va conține etichetele dorite și după aceea introduceți-le wp_head
acțiune.
funcția tes_mb_display () global $ post; // extrageți valorile metadatelor dacă există $ tes_meta_title = get_post_meta ($ post-> ID, '_tes_meta_title', true); $ tes_meta_description = get_post_meta ($ post-> ID, '_tes_meta_description', true); echo " „; add_action ('wp_head', 'tes_mb_display');
$ postare
obiect global.$ tes_meta_title
și $ tes_meta_description
variabile, respectiv. cap
element.wp_head
.Dacă ați adăugat și salvat un titlu și o descriere împotriva unei postări sau a unei pagini, vizualizarea sursei de pagină ar trebui să dezvăluie prezența titlului Open Graph și a etichetei de descriere, alături de descrierea meta utilizată de motoarele de căutare.
În acest articol, am creat un plugin SEO de bază care adaugă o descriere meta și etichetele Open Graph folosite de motoarele de căutare rețele sociale în secțiunea antet a WordPress.
Am învățat cum să creăm fișiere meta, să formăm câmpuri, să dezinfectăm datele înainte de salvarea în baza de date și să preluăm datele salvate pentru utilizare.
O alocare suplimentară pentru a afla mai multe despre acest proces: Extindeți acest plugin și adăugați un câmp de meta-cheie în formularul de meta-box și îl includeți printre etichetele inserate în antetul WordPress.