Cum se afișează datele postale Meta pe un post WordPress

În ultima mea serie de articole, am analizat conceptele programării orientate obiect din perspectiva începătorului. Scopul seriei a fost acela de a lua pe cei care nu erau familiarizați cu programarea orientată-obiect în PHP și de a explora aspectele fundamentale ale paradigmei în contextul WordPress.

Dacă nu ați avut ocazia să citiți seria, puteți să citiți un rezumat succint (împreună cu link-uri către fiecare articol din serie) în mesajul final.

În cursul seriei, unul din lucrurile pe care le-am făcut pentru a demonstra principiile orientate pe obiecte, precum și unele dintre caracteristicile API-ului WordPress a fost construirea unui plugin. 

Mai precis, am construit un plugin care ne-a permis să vizualizăm toate datele meta date asociate unei postări date în tabloul de bord WordPress.

Pluginul este disponibil pentru descărcare de pe GitHub unde puteți de asemenea să răsfoiți codul sursă, să vizualizați comentariile despre cod și, în general, să vedeți tot ce a urmat creării plugin-ului atunci când l-am dezvoltat.

De când a fost scrisă o anumită postare, am primit o serie de întrebări diferite, unul dintre care a fost modul în care luăm datele afișate în tabloul de bord - adică meta date postare - și afișăm-o în partea din față a paginii web teren.

În acest articol, vom examina extensia pluginului astfel încât să putem afișa datele pe o singură pagină de postare. Vom vorbi despre cum să facem acest lucru, având în vedere codul nostru existent, cum să facem acest lucru și vom vorbi de asemenea de ce ar putea să nu fie o idee bună.

Cu ce ​​a spus asta, să începem.

Ramificațiile de extindere a pluginului

Înainte de a începe să planificăm modul în care vom extinde plugin-ul, cred că merită o scurtă discuție cu privire la afișarea acestui tip de informații pe interfață - deși este posibil - poate că nu este o idee bună.

Adică cred că acest lucru este un caz în care, atunci când se ocupă cu anumite tipuri de date, este important să se ia în considerare ramificațiile a ceea ce optăm să facem atunci când construim produse pentru alții și cum gestionăm datele.

Pe scurt, doar pentru că noi poate sa face ceva nu înseamnă că noi ar trebui să Fă-o.

Uită-te la date

Gândiți-vă în acest fel: datele meta asociate cu o postare dată sunt stocate în baza de date - unele de WordPress, unele de teme și altele de pluginuri - toate acestea utilizează informațiile pentru nevoile lor specifice.

Dacă aruncați o privire la imaginea de mai sus, veți observa că unele rânduri sunt identificate prin chei prefixate cu o subliniere. De exemplu, avem _edit_lock și _edit_last și apoi câteva valori numerice. Acesta este un exemplu de date pe care WordPress le utilizează pentru a gestiona intern starea posturilor.

Celelalte chei pe care le vedeți au de a face cu plugin-urile pe care le-am instalat în instalarea WordPress locală și sunt folosite pentru a demonstra cum alte utilitare pot salva date în tabela meta date și apoi o pot raporta la postul dat.

Care este problema?

Problema cu afișarea tuturor acestor informații în partea frontală este că ar putea fi afișate prea multe informații pentru utilizator. 

În cazul de mai sus, nu este nimic deosebit de periculos sau sensibil care ar putea ajuta la compromiterea instalării, dar asta nu înseamnă că va fi întotdeauna cazul. Chiar și mai mult, există șanse semnificative să sfârșim afișarea informațiilor legate de un plugin sau de o temă care nu și-a dorit ca informațiile să fie afișate.

În plus, pentru mulți - sau chiar cei mai mulți - care vizitează un blog, văzând că informațiile afișate în partea din față a blogului vor arăta ca zgomotul. Jargonul tehnic nu înseamnă nimic. Acesta este motivul pentru care cred că păstrarea acestor informații retrogradate la tabloul de bord este cel mai bun loc pentru a face acest lucru.

Dar vom merge să extindem pluginul?

Pe scurt, da, dar nu pentru că cred că afișarea acestui tip de informație către utilizator este o idee bună, ci pentru că există o aplicație practică care vine cu extinderea unui plugin existent, beneficiile utilizării codului existent și văzând ramificațiile negative ale a face astfel.

Deci da - uneori, cele mai bune lecții pot veni din idei de implementare care ar putea să nu fie bune în retrospectivă. 

Dar este în regulă. Acesta este modul în care învățăm, corect?

În plus, există încă câteva lecții practice care vin cu învățarea modului de extindere a unei baze de cod existente.

Extinde Managerul Meta Posta unică

Ca și în toate tutorialele pe care le împărtășesc, încerc să planific exact ce facem să facem înainte să o facem, astfel încât să nu codificăm o mulțime de lucrări de ghici și să avem un plan de acțiune privind arhitectura soluției noastre.

Așadar, înainte de a merge mai departe, dacă nu ați revizuit Managerul Meta Post Meta, atunci vă rugăm să faceți acest lucru acum și vom continua.

După ce ați terminat, iată ce intenționăm să facem:

  1. Vom folosi tema implicită douăzeci și una ca bază a exemplului nostru.
  2. Vom introduce un director public care va fi utilizat pentru afișarea informațiilor din public parte a blogului în mod specific în contextul posturilor unice.
  3. Vom defini cârlige care ne vor permite să adăugăm informații la conținutul postării, astfel încât datele meta-date postate să poată fi afișate în partea de jos a conținutului. Vom folosi o masă rudimentară pentru acest lucru, care va moșteni stiluri din tema actuală. Rețineți că, făcând acest lucru, este posibil să ajungeți la niște stiluri cu adevărat clare și este posibil să ajungeți la unele stiluri foarte slabe. Acestea vor fi pentru tine de a pune în aplicare pe cont propriu.
  4. Apoi, vom profita de șablonul pe care l-am creat în versiunea inițială a plugin-ului pentru a vă asigura că puteți prelua metadatele postului pentru postarea respectivă pentru a fi afișat pe front.

Nimic prea complicat, nu? Trebuie doar să fim mai clari în pașii noștri. Deci sa începem.

Introduceți directorul public

Presupunând că ați activat deja douăzeci și unsprezece și plugin-ul instalat, hai să lucrăm la introducerea funcționalității noastre. Primul lucru pe care trebuie să-l facem este 

  • introduceți a public director
  • adaugă Single_Post_Meta_Manager_Public clasă
  • includeți clasa în fișierul plugin principal

După adăugarea fișierelor, cele de mai sus se pot face prin următoarele rânduri de coduri load_dependencies funcția în include / un singur post-meta-manager.php.

funcția privată load_dependencies () require_once plugin_dir_path (dirname (__FILE__)). 'Admin / clasa-un singur post-meta-manager-admin.php'; require_once plugin_dir_path (dirname (__FILE__)). 'Public / clasă-un singur post-meta-manager-public.php'; require_once plugin_dir_path (__FILE__). 'Clasă-un singur post-meta-manager-loader.php'; $ acest-> încărcător = nou Single_Post_Meta_Manager_Loader (); 

Observați că singura linie nouă este cea de-a doua require_once care importă fișierul de clasă. 

După aceea, să definim proprietățile, constructorul și metodele pentru Single_Post_Meta_Manager_Public clasă:

versiune = $ versiune;  / ** * Utilizează parțial localizat în directorul admin pentru redarea metadatelor * post după sfârșitul conținutului mesajului. * * @ param string $ content Conținutul mesajului. * @ retur string $ content Conținutul postului, inclusiv datele postate date meta. * / funcția publică display_post_meta_data ($ content) ob_start (); require_once plugin_dir_path (dirname (__FILE__)). 'Admin / amprente parțiale / un singur post-meta-manager.php'; $ template = ob_get_contents (); $ content = $ șablon; ob_end_clean (); returnați conținut $; 

Apoi, trebuie să creați Managerul unic de mesaje Meta define_public_hooks funcţie. Ar trebui să arate astfel:

get_version ()); $ this-> loader-> add_action ('the_content', $ public, 'display_post_meta_data'); 

Apoi, trebuie să definim un apel la această funcție în interiorul constructorului. Adică, chiar sub limita $ This-> define_admin_hooks (); line, adăugați $ This-> define_public_hooks (); apel.

Presupunând că totul a mers bine, ar trebui să puteți activa pluginul, să încărcați orice postare și să vedeți aceleași meta date afișate acum în partea din față a postului, precum și în tabloul de bord al postării:

rezumat

Așa cum am menționat mai devreme în acest tutorial, afișarea acestui tip de informații pe capătul unui post nu este neapărat cea mai bună idee; cu toate acestea, învățarea cum să adăugați practic la un plugin existent va introduce funcționalități complet noi, în timp ce reutilizați și unele dintre componentele existente.

În cele din urmă, reținerea cheie este de două ori:

  • Folosirea codului existent este un lucru puternic
  • Expunerea datelor care nu sunt relevante pentru utilizatori este o idee periculoasă

Deci, după ce ați citit acest tutorial special, rețineți că nu susțin neapărat acest lucru într-un mediu la nivel de producție, ci mai mult ca un instrument de învățare. Asta este, folosiți-l pe propriul dvs. risc.

Ca de obicei, vă rugăm să lăsați toate întrebările, comentariile și multe altele în feedul de mai jos!

Cod