Vom construi un plugin pentru a examina utilizarea filtrelor și a cârligelor disponibile pentru a schimba coloanele postului din panoul de administrare. Adăugați, ștergeți și umpleți-le cu conținut.
Când gândesc la dezvoltarea WordPress, cele mai frecvente lucruri pe care le găsesc pe care le vin în minte sunt funcționalitatea și implementarea temelor și pluginurilor, pentru a face o idee simplă și pentru a arăta așa cum doriți. Cu o pagină de backend și câteva sau multe setări aici și acolo.
Flexibilitatea API-ului WordPress merge mult dincolo de lucrurile cu care ați putea fi familiarizați.
Înainte de a începe chiar să facem ceva, trebuie să înțelegem ce vom realiza, care va fi rezultatul nostru final. Vom construi un plugin care va gestiona coloanele postului de administrare și conținutul acestora. Pentru a construi un plugin, avem nevoie de o idee care să se potrivească nevoilor noastre, astfel încât pentru acest tutorial pluginul nostru va transforma ușor funcțiile de posturi într-o interfață foarte simplă de gestionare a prețurilor și a valutelor. Pentru a fi chiar mai specific, vom urmări:
Și asta este, pe scurt, tot ceea ce este vorba despre acest tutorial. Din nou, vorbim despre punerea în aplicare a acestui aspect numai în paginile de administrare a posturilor de gestionare a posturilor. Ca parte a planului, se presupune că știți cum este creat și funcționează un plugin WordPress de bază, dar totuși voi menționa că vom crea un director în dosarul plugin-urilor WordPress cu numele de productâ și un dosar din interiorul lui a sunat productA.php. Cred că acum este evident că pluginul nostru este numit Produsul A
, Cred că este un nume bun pentru un plugin simplu cu caracteristicile de mai sus pentru scopurile acestui tutorial.
Aceasta este o parte distractivă ușoară, creând primele componente ale plugin-ului, și anume lucrurile care o identifică pe WordPress ca plugin și rulează fișierul pentru ca pluginul nostru să funcționeze corect. Așa că mergem mai departe și ne creăm Numele pluginului
, conecteaza Descriere
, Autor
numele și pluginul Versiune
valorile antetului care sunt comentate în partea de sus a codului sursă al fișierului plugin, la fel ca în exemplul următor:
Pasul 3 Implementarea acțiunilor și a filtrelor necesare
Primul lucru pe care o vom face este să adăugăm funcția meta-box în pluginul nostru. Vrem să adăugăm un metabox personalizat în pagina noastră de editare, undeva în partea de sus a barei laterale dreapta. Pentru a face acest lucru, trebuie să creăm o acțiune (sau o cârlig) a cărei funcționalitate o vom avea puțin mai târziu, dar să vedem cum se numește și se implementează în acest pas primul cârlig:
Cârligul Meta Box
funcția pA_admin_init () add_meta_box ('pA_metaid', __ ('cantitate / preț', 'pA_textdomain'), 'pA_inner_custom_box', 'post', 'partea', 'mare'); add_action ('admin_init', 'pA_admin_init');Mai întâi adăugăm o nouă acțiune în partea de jos a fișierului nostru pe care o vom folosi pentru un prim parametru, eticheta de acțiune a lui
admin_init
pentru a apela această funcție ori de câte ori un utilizator accesează zona de administrare. Al doilea parametru este numele funcției de apel invers care urmează să fie implementat când cârligul este activat. Vom numi această funcțiepA_admin_init
și se pare ca cele de mai sus.
pA_admin_init
funcția conține metoda care creează meta-caseta de care avem nevoie, generată de funcțieadd_meta_box
cu următoarele variabile:
pA_metaid
- pentru un identificator unic al meta-casetei__ ("cantitate / preț", "pA_textdomain")
- un șir care reprezintă titlul meta-casetei'PA_inner_custom_box'
- funcția de apel invers'post'
- un șir reprezentând tipul postării (deoarece lucrăm la postări, vom seta valoarea șirului la "post
''latură'
- un șir reprezentând poziția ecranului în cazul în care dorim ca meta-caseta noastră să fie activată, putem folosi "normal
","avansat
"sau"latură
“. Folosim "latură
"cum vrem să se arate în partea dreaptă a conținutului nostru'înalt'
- poziția în rândul celorlalte elemente de meta-box din partea de conținut a paginiiAcest lucru ar fi destul de mult pentru prima etapă a acțiunii meta-box.
La un moment dat datele introduse în meta-caseta trebuie să fie salvate, pentru ao salva, trebuie să adăugăm un alt cârlig în listă, de data aceasta cu o etichetă diferită, specifică, ca prim parametru.
add_action ('save_post', 'pA_save_postdata');
Exemplul de mai sus implementează cârligul necesar. După cum puteți vedea, parametrul tagului folosit în acest caz este save_post
pentru a ajunge la punctul de trimitere a postului, toate elementele de formă sunt trimise la PHP și salvate în baza de date, astfel încât să putem salva datele noastre exact atunci când formularul este trimis și WordPress o procesează. Se numește funcția de apel invers care face toată lucrarea pA_save_postdata
, vom crea această funcție puțin mai târziu în tutorial când vom avea grijă de toate aspectele metaboxului.
Pentru că încercăm să creăm coloane suplimentare în lista noastră de postări, trebuie să populai rândurile cu datele din acele coloane noi. Pentru a face acest lucru vom folosi următorul cod:
add_action ('manage_posts_custom_column', 'pA_manage_posts_custom_column', 10, 2);
Eticheta folosită este manage_posts_custom_column
și funcția de apel invers pA_manage_posts_custom_column
, pe care o vom construi în câteva momente.
Nu în ultimul rând, dorim să adăugăm și să eliminăm câteva coloane din lista de pagini cu postări. Pentru a face acest lucru, trebuie să filtrați cele existente și să eliminați sau să adăugați cum dorim chemând un filtru ca în exemplul următor:
add_filter ('manage_posts_columns', 'pA_manage_posts_columns');
Filtrul, la fel ca și acțiunile, are parametrii principali pe care îi folosim, unul este eticheta, în acest caz un șir cu numele de 'manage_posts_columns'
și o funcție de apel invers, de asemenea ca un șir, dar cu numele de 'pA_manage_posts_columns'
. Construim și folosim această funcție într-unul din pașii următori.
Pe măsură ce vrem să creăm o casetă meta și am setat deja cârligele și funcțiile pentru a ajunge la o metodă de apel invers care o generează, trebuie să scriem codul pentru aceasta.
Mai întâi vom examina pA_inner_custom_box
funcţie. Această funcție are un cod de bază foarte în interior care generează și gestionează un formular cu date. În primul rând, există 3 variabile $ pA_price
, $ pA_quantity
, și $ pA_currency
pentru a ține valorile celor 3 elemente pe care le dorim să le inserăm în lista meta-tag și posturi. Pentru a face acest lucru, le vom scoate din câmpurile personalizate unde le vom salva în continuare save_post
acțiune. Apoi vom crea câmpurile de formular HTML pe care le vom folosi pentru a posta datele când postul este actualizat sau publicat, din nou, folosind save_post
funcția de apel invers. Tot acest cod este disponibil pe deplin aici:
funcția pA_inner_custom_box () global $ post; $ pA_price = get_post_meta ($ post-> ID, 'pA_price', true); $ pA_quantity = get_post_meta ($ post-> ID, 'pA_quantity', true); $ pA_currency = get_post_meta ($ post-> ID, 'pA_currency', true); ?>
| |
valută: | type = "radio" nume = "valuta pA-valută" = "USD" /> USD / tip = "radio" nume = "valoare pA-valută" = "GBP" /> GBP / type = "radio" nume = "valuta pA-valută" = "EUR" /> EUR |
Acum, în primul rând, de ce folosim câmpuri personalizate? Pentru gestionarea ușoară și pentru orice sortare ușoară viitoare, filtrarea în interiorul interogării posturilor. În al doilea rând, folosim două casete de text pentru fiecare dintre valorile prețului și cantității și butoanele radio cu opțiuni USD, GBP și EURO pentru valorile valutare. Fiecare dintre aceste elemente de formă are valorile variabilelor pe care le-am completat anterior cu valori din câmpuri personalizate specifice.
Aceasta este pentru această parte, atunci când utilizatorul actualizează sau publică o postare aceste valori vor fi trimise la următoarea funcție de apel invers a tutorialului nostru.
Partea a doua și foarte importantă a funcționalității meta-box este salvarea datelor pe care le trimitem. La începutul tutorialului am implementat o funcție care gestionează datele postate. Acum ne vom uita la modul în care funcționează funcția de apel invers.
În primul rând, pentru că avem nevoie de o modalitate de identificare a postului, trebuie să includem variabila globală $ postare
pentru a obține valoarea id a postului prezentat în prezent. Apoi vom verifica dacă o variabilă ascunsă pe care am creat-o ca element de formă a fost trimisă sau nu. Dacă a fost trimis, vom începe să extragem valorile câmpurilor personalizate din baza de date pentru fiecare element din care suntem interesați: preț, cantitate și valută. Vom folosi get_post_meta
pentru a obține valorile meta cheie ale câmpului personalizat utilizând $ Post-> ID
valoarea variabilă ca identificator și numele cheii meta care ne interesează. Avem nevoie de aceste valori pentru a seta parametrul de valoare anterioară în următoarea noastră bucată de cod din această funcție care gestionează actualizarea datelor.
Datele sunt salvate ca câmpuri personalizate sub un nume specific metakey pA_quantity
pentru cantitate, pA_price
pentru preț și pAcurrency
pentru valorile valutare. Noile date sunt extrase din $ _POST
care conține date transmise.
funcția pA_save_postdata () global $ post; dacă $ _POST ['pA-hidd'] == 'adevărat') $ pA_price = get_post_meta ($ post-> ID, 'pA_price', true); $ pA_quantity = get_post_meta ($ post-> ID, 'pA_quantity', true); $ pA_currency = get_post_meta ($ post-> ID, 'pA_currency', true); update_post_meta ($ post-> ID, 'pA_quantity', $ _POST ['cantitate pA'], $ pA_quantity); update_post_meta ($ post-> ID, 'pA_price', $ _POST ['pA-price'], $ pA_price); update_post_meta ($ post-> ID, 'pA_currency', $ _POST ['pA-currency'], $ pA_currency);
Acest lucru încheie implementarea meta-box în plugin-ul nostru.
În cele din urmă am ajuns la partea principală a acestui tutorial, bine, cel puțin una dintre părțile principale. Spun părțile principale, deoarece următorul lucru este ceea ce face tutorialul, totuși, nu poate funcționa fără toate celelalte părți făcute anterior. Vom examina acum cum să eliminăm și să adăugăm noi coloane de postare pe pagina de posturi din panoul de administrare.
Deoarece avem valori suplimentare adăugate în special la post, lucruri precum preț, valută și cantitate, dorim ca în această parte să avem coloane suplimentare în pagina posturilor cu aceste nume și valorile asociate. Să ne curățăm puțin lucrurile, în primul rând, vrem să eliminăm autorul, etichetele și comentariile din coloane, pentru că în scopul acestui tutorial vrem să învățăm cum să facem acest lucru și nu avem nevoie de acele coloane din moment ce încercăm să ne comportăm ca pagina de posturi se ocupă de un produs cu prețuri și cantități.
funcția pA_manage_posts_columns (coloane $) global $ wp_query; unset ($ coloane ['autor'], $ coloane ['etichete'], $ coloane ['comentarii']); $ total = 0; foreach ($ wp_query-> mesaje ca $ post) $ total + = get_post_meta ($ post-> ID, 'pA_price', true) * get_post_meta ($ post-> ID, 'pA_quantity', true); $ columns = array_merge ($ coloane, array ('preț' => __ ('preț', 'valută' => __ ("Imagine"), "total" => __ ("Total:". $ Total))); returnează coloane $;
Arată destul de simplu, nu? Desigur, vorbesc despre funcția de apel inversă de mai sus pentru manage_posts_columns
filtru care gestionează gestionarea coloanelor post, la fel cum spune și numele. Există doar câteva linii de cod acolo, dar această parte este de fapt mult mai complicată decât orice altă parte anterioară din acest tutorial (și acele părți nu sunt atât de greu, încât aceasta nu ar trebui să fie atât de greu de înțeles).
În primul rând, funcția de apel invers a filtrului menționat mai sus are un parametru care păstrează toate coloanele din interiorul acestuia ca o matrice. Setăm acest parametru sub numele coloane $
astfel încât să putem folosi în câteva momente. În continuare trebuie să integrăm o funcție globală în funcție, și anume $ wp_query
. De asemenea, vom folosi în scurt timp acest lucru.
Din moment ce coloane $
parametrul este un arrray care conține toate coloanele paginii postărilor, tot ceea ce trebuie să facem în acest caz este eliminarea parametrilor de matrice pe care le dorim. Pentru a face acest lucru, vom folosi doar unset
Funcția PHP și separăm numele de matrice pe care dorim să le eliminăm prin virgule. Uşor.
Deoarece folosim prețul și cantitatea ca valori pe care le lucrăm dinamic, vrem să realizăm un total de aceste valori într-un rând extra extra pe care îl vom adăuga într-un moment. Pentru a calcula acest lucru, trebuie să extragem valorile tuturor prețurilor și cantităților fiecărei postări, să le multiplicăm și să adăugăm rezultatele în sus. Rezultatul va fi un total de valori ale tuturor posturilor înmulțite cu cantitatea lor. Suma pe care dorim să o afișăm în titlul coloanei când adăugăm coloana la următoarea parte. Așadar, vom recupera valorile câmpurilor personalizate ale prețului și cantității fiecărui mesaj folosind get_post_meta
funcția, și a face un total folosind un incrementat $ totală
variabil. Pentru a crea buclă cu datele cerute vom folosi sistemul integrat $ wp_query
variabilă globală.
Pentru a adăuga coloane, vom folosi abordarea pe care am folosit-o pentru a le elimina numai într-un mod diferit, și anume nu unset
funcția de a elimina, dar array_merge
Funcția PHP pentru adăugarea noilor coloane. Coloanele sunt adăugate ca matrice în această ordine și prin aceste denumiri: preț, valută, cantitate, imagine recomandată și Total.
Tot ce trebuie să faceți acum este să returnați coloane $
variabilă și funcția de apel invers va face magia. Rezultatul final este ceva ce ar trebui să facă ca pagina de postări să aibă titlurile tabelului de titlu așa cum arată:
Ultimul pas al acestui tutorial este despre valorile personalizate ale coloanelor. După crearea coloanelor anterioare trebuie să afișăm valorile acestor prețuri, valute și așa mai departe, în lista de posturi trebuie să adăugăm corect valorile corespunzătoare valorilor personalizate. Pentru a face acest lucru, vom folosi un cârlig implementat anterior, care are funcția callback cu numele de pA_manage_posts_custom_column
. Funcția are doi parametri, un parametru de coloană care conține eticheta de nume a coloanei în care ne aflăm, utilizat de noi pentru a identifica unde suntem, iar ID-ul postului ca al doilea parametru.
Mai întâi avem nevoie de o condiție de comutare pentru a verifica coloana $
variabilă pentru tipul de post în care ne aflăm. Desigur, ne interesează numai coloanele personalizate create, așa că vom pune cazurile numai la acele valori.
Aceste trei tipuri de coloane pe care le-am creat au un tip de date meta-cheie comun, un șir simplu care este o coloană personalizată pe care o putem obține utilizând get_post_meta
funcția cu variabilele corespunzătoare, mai precis $ POST_ID
pentru identificarea postului, meta-cheie pentru identificarea câmpului personalizat și a unei variabile booleene setată la adevărat pentru a obține datele ca un șir ecou sau ca array.
Există o coloană suplimentară pe care am adăugat că este puțin diferită și nu a fost menționată anterior. Vorbesc despre featured_image
care va afișa eticheta HTML a imaginii recomandate din postul din rândul postului curent. Pentru a obține imaginea recomandată, folosim get_post_thumbnail
funcția cu id post ca un identificator și un șir de dimensiune.
O valoare ultima coloană este totală. Suma totală a fiecărui post este calculată prin extragerea câmpurilor personalizate folosind aceeași metodă ca înainte (get_post_meta
funcție) de preț și cantitate și înmulțirea acestora. Totalul este rezultatul dorit.
funcția pA_manage_posts_custom_column (coloană $, $ post_id) comutare (coloană $) prețul cazului: $ pA_val = get_post_meta ($ post_id, 'pA_price', true); pauză; cazul "valută": $ pA_val = get_post_meta ($ post_id, 'pA_currency', true); pauză; caz "cantitate": $ pA_val = get_post_meta ($ post_id, 'pA_quantity', true); pauză; cazul 'featured_image': dacă (has_post_thumbnail ()) $ pA_val = get_the_post_thumbnail ($ post_id, 'thumbnail'); pauză; caz "total": $ pA_price = get_post_meta ($ post_id, 'pA_price', true); $ pA_quantity = get_post_meta ($ post_id, 'pA_quantity', true); $ pA_val = $ pA_value * $ pA_quantity; pauză;
Exemplul de mai sus este modul în care funcția discutată anterior trebuie implementată pentru a funcționa corect, puteți verifica codul de mai sus pentru a înțelege această secțiune a tutorialului. Ca rezultat vizual, postul de salut al lumii a fost dat câteva valori pentru preț, valută și cantitate și un ecran de imprimare aleatoare a fost încărcat ca o imagine recomandată. Cu ajutorul pluginului nostru instalat, pagina admin posts arata astfel:
WordPress devine din ce în ce mai puternic și mai flexibil, cu o mulțime de noi caracteristici și posibilități pe care nu numai că nu le aveam, dar nu ne-am putea da seama cât de utile sunt acestea. Acest tutorial are scopul de a vă ajuta să înțelegeți cum puteți gestiona cu ușurință coloane pentru postări din zona de administrare. Puteți alege să utilizați aceste informații cum doriți pentru orice proiect despre care ați putea gândi că ar fi util. Gândiți-vă doar la posibilitățile pe care le puteți crea cu acești pași simpli!
Ce alte funcții WordPress subevaluate credeți că oamenii adesea ignoră? Spuneți-ne în comentariile!