7 reguli simple cele mai bune practici de dezvoltare a plug-in-urilor WordPress

Am vorbit mult despre "cele mai bune practici" aici pe Wptuts în ultima vreme. Astăzi, vom acoperi câteva bune practici importante pentru crearea unui plugin WordPress. De la sfaturi de securitate la trucuri de nume, urmați aceste reguli și nu veți greși. Fie că sunteți un dezvoltator de plug-inuri sau un veteran testat în timp, aceste reguli simple și sugestii vă vor face un dezvoltator mai bun (și comunitatea vă va mulțumi pentru asta!)


Regula 01: A avea o strategie

Da, o strategie. Încercați această listă de verificare:

  • Este plugin-ul meu doar pentru distracție / demonstrații sau pentru utilizarea de zi cu zi în lumea reală?
  • Îi scriu pentru a contribui la comunitate, pentru a mă promova sau a câștiga venituri?
  • Pot să-mi permit timp să ofere suport utilizatorilor?
  • Au fost deja scrise pluginuri similare? Verificați Depozit Wordpress Plugin.

Aceste întrebări sunt importante, deoarece ele influențează cât de grav trebuie să luați probleme cum ar fi standardele de codare, actualizările, securitatea, suportul și documentația. Chiar dacă scriem doar un plug-in pentru uzul dvs. sau pentru folosirea colegilor dvs., trebuie să vă gândiți foarte mult la modul în care o să faceți acest lucru, astfel încât să nu faceți o tijă pentru propria dvs. back.


Regula 02: Utilizați standarde de codare consecvente și clare

Ce preferi, asta??

 ($ imagedata ['mime'], array ('image / jpeg', 'image / png', 'image / gif'))) $ result [ error '] =' Imaginea ta trebuie să fie jpeg, png sau gif! ';  elseif ($ file ['size']> 200000)) $ result ['error'] = 'Imaginea ta a fost'. $ file ['size'] bytes! Nu trebuie să depășească'MAX_UPLOAD_SIZE '. octeți. ';  retur $ rezultat; 

Sau asta?

 / * procesează imaginea încărcată, verificând tipul de fișier și mărimea fișierului * / funcția parse_file ($ image_data, $ file) if (! in_array ($ image_data ['mime'], unserialize (TYPE_WHITELIST) error '] =' Imaginea ta trebuie să fie jpeg, png sau gif! ';  elseif (($ file ['size']> MAX_UPLOAD_SIZE)) $ rezultat ['error'] = 'Imaginea ta a fost'. fișierul $ ['size']. "octeți! Nu trebuie să depășească ". MAX_UPLOAD_SIZE. "octeți.";  retur $ rezultat; 

Lucruri simple cum ar fi spațierea consecventă, indentarea, denumirea variabilei informative și comentariile succinte sunt un loc bun pentru a începe. Aceasta este singura diferență în exemplele de mai sus. WordPress are un ghid excelent pentru standardele de codificare. Dacă codați la un standard, codul dvs. va fi mai ușor de înțeles, editat și depanat.

Utilizați Pachetul de numere

Există două moduri de a construi un plugin WordPress: ca o mulțime de funcții sau ca o clasă. Rețineți că funcțiile din plugin-ul dvs. sunt aruncate în spațiul de nume global cu toate celelalte funcții fără nume, ceea ce înseamnă că dacă aveți o funcție numită plugin_init, probabil că va intra în conflict cu aceeași funcție scrisă de altcineva la unele punct. Modul evident de a rezolva această problemă este de a prefixa numele funcției cu ceva unic. Îmi place să folosesc primele litere din numele plugin-ului meu, așa că dacă aș avea un plugin numit My Great Plugin, aș numi funcția de mai sus mgp_plugin_init și același lucru pentru restul funcțiilor mele.

Dar o modalitate mai bună este de a crea o clasă pentru plugin-ul dvs., astfel încât toate funcțiile vor fi namespaced sub numele clasei și chiar mai bine, puteți utiliza acum nume scurte, comune (funcții).

 clasa my_class function hello_world () return 'Hello World!';  funcția goodbye_world () return 'World Goodbye!'; 

Apoi, puteți accesa metodele dvs. de clasă sub propriul spațiu de nume:

 $ my_new_plugin = noua mea_class (); echo $ my_new_plugin-> hello_world (); echo $ my_new_plugin-> goodbye_world ();

Regula 03: Luați Securitatea Serios

Efectuarea plugin-ului sigur este cel mai important pas pe care îl puteți lua, dar mulți dezvoltatori reduc securitatea sau îl retrogradează la starea unei ulteriori. Nu face această greșeală.

Introduceți sintetice, ieșiri de ieșire

Ar trebui să vă familiarizați în special cu:

  • esc_url
  • esc_url_raw
  • wp_filter_kses
  • esc_attr
  • esc_html
  • esc_textarea

Dacă utilizați o funcție precum wp_insert_post, WordPress va dezinstala aceste date pentru dvs. În mod similar, dacă utilizați metodele bazei de date $ wpdb-> insert sau $ wpdb-> update, WordPress va dezinstala datele. Dar dacă alegeți să accesați mai direct baza de date cu ceva de genul $ wpdb-> get_result, atunci ar trebui să utilizați wpdb-> pregătiți pentru a împiedica injecțiile SQL de cod rău intenționat.

In loc de:

 $ admin_posts = $ wpdb-> get_results ("SELECT ID, post_title FROM $ wpdb-> posturi WHERE post_status = 'publica' AND post_author = 1");

Ați folosi:

 $ admin_posts = $ wpdb-> get_results ($ wpdb-> prepare ("SELECT ID, post_title FROM $ wpdb-> posturi WHERE post_status =% s ȘI post_author =% d", "publicare", 1));

În exemplul de mai sus,% s este un substituent pentru introducerea șirului (publicare) și% d este un substituent pentru introducerea numerică (1). Puteți utiliza cât mai mulți înlocuitori de locație de care aveți nevoie.

Utilizați nonces pentru verificarea formularului și a adresei URL

Este important să știți că atunci când un formular sau un url este postat înapoi în WordPress, că a fost site-ul dvs. WordPress care la generat de fapt și nu un agent terț sau un agent rău intenționat. Pentru a avea grijă de acest aspect al securității, folosim noncese. Un nonce este un număr folosit o dată.

Pentru un formular, generăm un câmp nonce folosind wp_nonce_field care va fi inclus în forma noastră ca un câmp ascuns:

 wp_nonce_field ('my_nonce', 'my_nonce_submit');

Pentru că acum este un câmp ascuns în forma noastră, se va întoarce la noi când se va trimite formularul. Apoi, putem verifica dacă nonce este valid utilizând wp_verify_nonce:

 wp_verify_nonce ($ _ POST ['my_nonce_submit'], 'my_nonce'))

Asta se va întoarce adevărat dacă verificarea nu este confirmată.

Pentru o adresă URL (linkuri în e-mailuri, adrese URL de browser), puteți crea o adresă ursată nonced cu wp_nonce_url:

 $ nonced_url = wp_nonce_url ('http://my_site.com?action=register&id=123456', 'register_nonce');

Asta ar crea un url ca acesta ...

http://my_site.com?action=register&id=123456&_wpnonce=250d696dc6

... pe care le-ați putea trimite într-un e-mail de confirmare a înregistrării. Apoi, verificați urlul de intrare pentru un nonce cu același id folosind funcția check_admin_referer și continuați cu verificarea dacă este adevărat.

 dacă ($ _GET ['action'] == 'register') if (check_admin_referer ('register_nonce')) if verify_id $ GET ['id'])) echo 'Registration verified!  altceva echo 'Verificarea înregistrării a fost nereușită!'; 

Regula 04: Accesați serviciile Web inteligent

Internetul este plin de servicii web, oferindu-ne totul, de la prognoze meteorologice la cotații de stoc la ultimele tweet-uri de pe Twitter. Cea mai eficientă modalitate pentru un plugin pentru a accesa datele de la distanță este să utilizați API-ul HTTP care va gestiona solicitarea dvs. în fundal, folosind cele mai eficiente dintre cele cinci metode posibile de la distanță pe care le expune PHP. Este ca un magazin unic pentru accesarea webservicii.

Aceasta folosește metoda wp_remote_get (o funcție de înfășurare a clasei HTTP) pentru a obține un corp de pagină:

 $ page_data = wp_remote_get ("http://site.com/page"); dacă ($ page_data ['răspuns'] ['cod'] == 200) $ body = $ page_data ['body']; 

Același lucru cu wp_remote_post pentru a vă conecta:

 $ args = array ('login' => 'login_name', 'password' => 'my_password'); $ response = wp_remote_post ('http://site.com/login', $ args);

Regula 05: Internaționalizarea

Acest lucru nu trebuie să fie o afacere mare, dar este esențial dacă doriți să ajungeți la cea mai largă audiență posibilă. La minimum, tot ce trebuie să faceți este să vă pregătiți plugin-ul cu funcțiile _e () și __ () și să vă faceți griji despre texdomain după aceea.

Totul este explicat foarte bine în acest articol wp.tutsplus de Tom McFarlin și aici la codul WordPress.


Regula 06: Încărcați numai ceea ce aveți nevoie

Când pleci peste noapte, nu iei atât de mult cu tine ca și tine dacă te duci în vacanță timp de o lună. Deci, tratați plugin-ul dvs. în același mod: încărcați numai foile de stil, javascript și alte scripturi de care aveți nevoie pentru acea pagină sau secțiune a site-ului. Cel puțin, nu încărcați scripturile admin pe interfață și invers.

 if (is_admin ()) // încărcați pluginul meu pentru paginile de administrare altceva // încărcați pluginul meu pentru frontend

Regula 07: Tidy Up After Yourself

Când activați un plugin, veți vedea o legătură de dezactivare care apare în pagina de administrare a pluginurilor. Însă dezactivarea oprește numai funcționarea pluginului. După dezactivare, veți obține apoi un link de ștergere. Linia de ștergere este cheia pentru a vă întreține după tine. Ar trebui chiar să fie numit dezinstalare.

Dacă creați un fișier numit uninstall.php în același director ca pluginul, codul din acest fișier va fi rulat când utilizatorul dă clic pe ștergere.

 dacă (definit ('WP_UNINSTALL_PLUGIN')) // ștergeți opțiunile, tabelele sau orice altceva

Codul de mai sus verifică constanta WP_UNINSTALL_PLUGIN pe care WordPress o stabilește când apăsați pe ștergere. Apoi puteți să ștergeți toate opțiunile sau tabelele personalizate pe care pluginul dvs. le-ați creat atunci când a fost activat.


Sfaturi pentru bonusuri

Activați depanarea

Debuggerul WordPress va găsi erori în codul dvs. care, deși nu ar putea să vă prăbușească, ar trebui corectate pentru a vă asigura că faceți lucrurile în mod corect. Deci, activați depanarea WordPress prin plasarea acesteia în /wp-config.php:

 define ('WP_DEBUG', TRUE);

Studiați biblioteca de funcții WordPress

WordPress are adesea funcții care vor rezolva o sarcină de programare într-o funcție pe care ați scris mai multe linii de cod pentru a le atinge. Consultați biblioteca de funcții pentru a vă asigura că nu scrieți mai mult cod decât trebuie.

Obțineți o evaluare reciprocă

Obținerea altora pentru a vă uita la codul dvs. este o formă puternică de control al calității. Alți utilizatori vor găsi greșeli pe care nu le-ați observat în propria dvs. testare. Nu vă fie frică să vă postați codul: toată lumea face greșeli.

Nu utilizați funcții depreciate!

WordPress este plină de funcții depășite care, în timp ce sunt încă acceptate pentru versiunile curente, nu pot fi lansate în viitor. Este posibil să fi folosit codul dintr-un tutorial vechi. Căutați în codul Wordpress pentru a vedea dacă este marcat ca fiind depreciat. Va exista o legătură către funcția nouă.

Utilizați un forum bun pentru codul WordPress

Dacă aveți o problemă, întrebați pe ceilalți. Există destule forumuri pentru soluțiile WordPress. Unul dintre preferatele mele este Wordpress Answers din minunata rețea Exchange Stack.

Luați-vă mândrie în munca voastră!

Este ușor să lansați un plugin cu un călăreț care nu-ți asumă nicio responsabilitate pentru efectele codului tău. Acum este necesar: nu poți fi responsabil pentru modul în care plugin-ul tău va fi folosit. Dar poți lua o mândrie profesională în ceea ce privește munca ta. Faceți întotdeauna tot ce aveți mai bun. Reputația ta va fi mai bună pentru asta.

Cod