Cu WordPress Meta Boxes pentru a construi un plug-in de bază SEO

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.

Crearea metalei

Î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');

Codificarea câmpurilor Meta Box

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:

  • Preluați și stocați valorile metadatelor într-o variabilă numai dacă există. Aceasta se face pentru a popula câmpurile cu valorile sale atunci când acestea sunt prezente în baza de date.
  • Se adaugă un feed nonce, astfel încât să putem verifica mai târziu în timpul verificării înainte ca datele introduse în câmpurile de formular să fie salvate în baza de date.
  • Formularul HTML constând dintr-un element de introducere a câmpului de text și o zonă de text pentru capturarea datelor de etichetă a titlului și a descrierii respectiv este reluat / tipărit.

În acest moment, ar trebui să vedeți caseta de meta în ecranul postului și al paginii.


Salvarea datelor Meta Box

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:

  • În primul rând, verificăm că acest lucru a venit din ecranul nostru și cu o autorizație adecvată, deoarece 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.
  • Apoi, dacă o înregistrare există deja în baza de date, o vom recupera și vom stoca în $ 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.
  • După aceasta, datele trimise se dezinfectează folosind WordPress ' 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.
  • Metadatele sunt actualizate la baza de date prin intermediul update_post_meta.
  • În cele din urmă, 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ă.

Utilizarea datelor salvate

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'); 
  • Pentru a detecta cu succes ID-ul postului, luăm o referință la post utilizând $ postare obiect global.
  • Metadatele sunt apoi preluate din baza de date și salvate la $ tes_meta_title și $ tes_meta_description variabile, respectiv. 
  • În continuare, am definit meta-tag-ul care urmează să fie inserat în șablon cap element.
  • În cele din urmă, ne fixăm funcția 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.

rezumat

Î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.

Cod