Modul de personalizare a temei pentru validarea temelor WordPress

Securitatea și coerența sunt câteva dintre preocupările majore pe care le avem în utilizarea bibliotecilor, cadrelor și pluginurilor terților. Ne confruntăm cu aceeași problemă în folosirea temelor și pluginurilor WordPress gratuite și comerciale.

Codul WordPress oferă un set de linii directoare și reguli pentru dezvoltarea de teme. Pentru a trimite teme la directorul tematic WordPress, trebuie să respectați aceste linii directoare. Dar există sute de teme gratuite și comerciale care ar putea să nu fie dezvoltate în conformitate cu aceste orientări.

Practic, trebuie să verificăm dacă o temă se potrivește cel puțin cu setul de linii directoare și reguli. Tema Check este un plugin gratuit WordPress dezvoltat pentru a valida temele WordPress.


Pot verifica tema să valideze totul?

Cu siguranță nu poate, cel puțin, cu funcționalitatea implicită. Deci, aici vom vedea cum putem folosi controalele existente, precum și să adăugăm propriile noastre reguli pentru validarea temelor WordPress.


Importanța pluginului de verificare a temelor

Theme Check vine cu aproximativ 40 de teste integrate pentru a valida tema dvs. atât pe front-end, cât și pe tabloul de bord al administratorului. Practic, aceste cecuri vor conține validările necesare pentru a evita preocupările legate de securitate și funcționalitățile temelor potrivite față de liniile directoare privind dezvoltarea temelor.

Ca dezvoltatori de temă sau utilizatori de teme ale unor terțe părți, ar trebui să folosim un astfel de instrument pentru a ne asigura că temele noastre sunt conforme standardelor.

Importanța majoră a verificatorului de teme vine cu capacitatea sa de a schimba comportamentul existent sau de a adăuga un comportament nou prin pluginurile pluggable. În tot acest articol ne vom uita la arhitectura sa și la posibilitățile de extindere a plugin-ului pentru ao folosi ca pe o bibliotecă de verificare tematică pe deplin prezentată.


Modul de utilizare a temei de verificare

Presupun că majoritatea dintre voi ați folosit deja acest plugin în sarcinile dvs. de dezvoltare WordPress. Cei care sunt noi în acest plugin pot lua o copie din depozitul de plugin-uri WordPress la http://wordpress.org/extend/plugins/theme-check/.

Odată instalat și activat, veți primi un submeniu numit Tematica de verificare sub Aspect meniul. Acolo puteți găsi o casetă drop-down care conține toate temele disponibile pe instalarea dvs. WordPress. Puteți selecta o temă și faceți clic pe Verifică pentru a începe validarea temei. Odată ce procesul este finalizat, veți primi un ecran ca mai jos.


Asigurați-vă că ați activat funcția WP_DEBUG opțiune în wp-config.php fișier la ADEVĂRAT înainte de a începe validarea temelor.

Tema Rezultat Verificați ecranul va conține toate tipurile de erori găsite în tema dvs. în diferite tipuri de erori, cum ar fi RECOMANDAT, NECESAR, AVERTIZARE, etc. Rețineți că toate aceste validări se fac pe baza standardelor de revizuire a temelor WordPress.

Puterea reală a Theme Check vine atunci când extindem plugin-ul cu verificări personalizate de validare. Deci, să săpăm codul pentru a afla cum funcționează și cum îl putem extinde cu propriile noastre controale.


Înțelegerea interfeței de verificare a temelor

Theme Check oferă o interfață bine definită și simplă pentru crearea de verificări. Toate controalele existente, precum și verificările noi, trebuie implementate în această interfață pentru a face lucrurile să funcționeze. Următorul cod conținut în checkbase.php fișierul prezintă interfața comună pentru verificarea temelor.

 // interfață că toate controalele ar trebui să pună în aplicare interfața temăcheck // ar trebui să se întoarcă adevărat pentru bun / bine / acceptabil, fals pentru rău / nu-bine / inacceptabil funcția publică verifica ($ php_files, $ css_files, $ other_files); // ar trebui să returneze o serie de șiruri de caractere explicând orice probleme găsite funcția publică getError (); 

În principiu, aceasta conține două funcții pentru verificarea temei și furnizarea de erori. Toate conținutul fișierelor din tema dvs. vor fi comprimate în trei variabile principale ca șiruri de caractere. Aceste variabile sunt transferate apoi în funcția de verificare a fiecărei clase de verificare de către plugin.

În interiorul Verifica trebuie să implementăm validările și să întoarcem erorile dacă verificarea se termină ca un eșec. Apoi getError funcția va fi apelată pentru a adăuga mesajele de eroare în pagina Rezultatele verificării temelor.


Introducere în procesul de verificare a temelor

Cred că este important să înțelegeți procesul de inițializare a temei pentru a afla cum funcționează și secțiunile importante pe care trebuie să ne concentrăm, înainte de a extinde funcționalitatea pluginului.

După ce selectăm tema și dă clic pe butonul "Verifică", pluginul va căuta toate fișierele din tema selectată folosind PHP RecursiveDirectoryIterator și atribuie întregul conținut al acelor fișiere într-o variabilă de șir.

Apoi conținutul fișierului va fi separat în trei variabile, câte unul pentru fișierele PHP, fișierele CSS și alte fișiere. Apoi începe procesul de rulare a verificărilor tematice, ceea ce va fi partea cea mai importantă pentru noi ca dezvoltatori.

Luați în considerare următorul cod pentru procesul de execuție inițială după încărcarea variabilelor de fișier.

 // încărcați toate verificările din directorul de verificări $ dir = 'verificări'; foreach (glob (dirname (__FILE__) ./$dir/*.php ") ca fișier $) include $ file;  do_action ('themecheck_checks_loaded'); funcția run_themechecks ($ php, $ css, $ other) global $ themechecks; $ pass = true; foreach ($ themechecks ca $ cec) if ($ check instanceof themecheck) $ pass = $ pass & $ check-> cecuri ($ php, $ css, $ other);  return $ pass; 

Cod Explicație

  • Toate verificările temelor sunt stocate în verificări directorul pluginului și fiecare dintre acestea este inclus prin căutarea fișierelor PHP din director.
  • Odată ce toate verificările temelor sunt încărcate, pluginul execută o acțiune personalizată numită themecheck_checks_loaded. Această acțiune acționează ca cea mai importantă parte a procesului de extindere.
  • Apoi, sistemul începe să execute verificările tematice prin run_themechecks funcția, care ia fișierele PHP, fișierele CSS și alte fișiere ca variabile.
  • În cele din urmă, funcția de verificare a fiecăruia dintre verificările tematice este încărcată în global $ themechecks care va fi executată pentru a finaliza procesul de verificare.

Personalizarea controalelor tematice existente

Majoritatea verificărilor tematice se bazează pe potrivirea expresiilor regulate sau pe potrivirea pozițiilor specifice în șiruri. Prima noastră cerință este să ne dăm seama cum putem modifica comportamentul controalelor existente. Deci, haideți să aruncăm o privire la IncludeCheck , care validează modul în care fișierele ar trebui incluse într-o temă.

 class IncludeCheck implementează temelecheck protejat $ error = array (); verificarea funcției ($ php_files, $ css_files, $ other_files) $ ret = true; $ checks = array ('/ (? __ ("Tema pare să utilizeze include sau să solicite. Dacă acestea sunt folosite pentru a include secțiuni separate ale unui șablon din fișiere independente, atunci get_template_part () ar trebui să fie folosit în schimb. "," themecheck ")); foreach ($ php_files ca $ php_key => $ phpfile) foreach ($ verifică ca $ key => $ check) checkcount (); dacă (preg_match ($ cheie, $ phpfile, $ meciuri)) $ filename = tc_filename ($ php_key); $ error = '/ (?eroare [] = sprintf (__ ('INFO: % 1 $ s % 2 $ s% 3 $ s ',' themecheck '), $ nume fișier, $ check, $ grep);  returnează $ ret;  funcția getError () return $ this-> error;  $ themechecks [] = nou IncludeCheck;

Cod Explicație

  • Toate verificările de temă au o matrice protejată pentru stocarea erorilor.
  • În interiorul funcției de verificare, putem include orice număr de verificări într-o matrice. Aici avem doar un cec.
  • Majoritatea verificărilor tematice vor fi executate prin potrivirea expresiilor regulate și, prin urmare, cheile pentru o serie de verificări vor fi expresii regulate. Valoarea respectivei chei ar trebui să conțină mesajul de eroare care trebuie afișat în caz de defecțiuni.
  • Apoi trebuie să alegem un anumit tip de fișier și să trecem prin fiecare verificare în matrice în timp ce actualizăm global checkcount variabil.
  • Apoi conducem expresia de expresie regulată și atribuim erorile matricei globale de erori la eșecuri.
  • După aceea, readucem statutul cecului ca un succes sau un eșec. În funcție de stare, pluginul va lua erorile necesare pentru a fi afișate pe pagina de rezultate.
  • În cele din urmă, inițializăm obiectul clasei de verificare a temelor și le atribuim la nivel global $ themechecks array la sfârșitul dosarului.

Să presupunem că doriți să îmbunătățiți o verificare tematică existentă adăugând noi reguli sau modificând regulile existente. Tot ce trebuie să faceți este să adăugați un element nou sau să modificați expresiile regulate ale elementelor existente în matricea de verificări.

Acum ar trebui să aveți o înțelegere clară a modului în care funcționează verificările temelor și modul în care erorile sunt generate pe eșecuri. Să trecem la cea mai importantă parte a creării propriilor verificări personalizate, fără a afecta plugin-ul principal.


Extinderea temei de verificare cu Pluggable Plugin

Construirea de cecuri noi de teme poate fi la fel de simplă ca implementarea interfeței cu o nouă clasă de verificare a temelor și punerea fișierelor în directorul de verificări al pluginului. Dar schimbarea funcționalității de bază nu este o metodă recomandată deoarece vă veți pierde mereu fișierele pe actualizările pluginului.

Cea mai bună practică este extinderea pluginurilor utilizând opțiunile posibile fără a afecta codul de bază. Dezvoltatorii temei de verificare au activat opțiunea de extindere a funcționalității utilizând un cârlig de acțiune numit themecheck_checks_loaded.

Acest cârlig de acțiune va fi executat după încărcarea tuturor verificărilor temelor. Prin urmare, vom avea acces la variabila globală de verificare a temelor în interiorul pluginurilor pluggable. Acum este timpul să începeți prin crearea unui plugin personalizat.


Eliminarea cecurilor existente

Uneori este posibil să fie necesar să dezactivați anumite verificări tematice pentru a corespunde cerințelor propriilor noastre teme. Trebuie fie să eliminați fișierul, fie să comentați codul de inițializare pentru a le dezactiva într-un scenariu normal. Dar cu puterea unui plugin pluggable, le putem activa sau dezactiva în orice moment fără a afecta miezul. Să vedem cum putem dezactiva verificările tematice utilizând un plugin.

 funcția custom_themecheck_checks_loaded () global $ themechecks; $ checks_to_disable = array ("Deprecated", "Screenshot_Checks"); foreach ($ themechecks ca $ keyindex => cec $) if ($ check instanceof themecheck) $ check_class = get_class ($ check); dacă (in_array ($ check_class, $ checks_to_disable)) unset ($ themechecks [$ keyindex]);  add_action ('themecheck_checks_loaded', 'custom_themecheck_checks_loaded');

Putem implementa themecheck_checks_loaded acțiunea pluginului Theme Check, în interiorul propriilor pluginuri. Acolo avem acces la toate verificările tematice încărcate. Putem defini o matrice care să conțină numele de clasă ale controalelor tematice pe care dorim să le dezactivați. În cele din urmă, dezactivați verificările din matricea dezactivată și verificarea temelor va fi executată fără aceste validări.

Ne este permis să modificăm cu ușurință verificările existente ale temelor utilizând propriul plugin. Implementarea unei verificări tematice de la zero este intenția principală a acestui tutorial. Așadar, să vedem cum putem crea un cec tematic nou.


Crearea de noi verificări tematice

Pot exista sute de scenarii pentru implementarea controalelor tematice personalizate. Validarea cârligelor de acțiune personalizată este una dintre preferatele mele și voi folosi codul pentru explicații.

Practic, aș vrea să am anumite cârlige personalizate în temele mele pentru a adăuga noi funcționalități. Tema tematică este un bun exemplu pentru utilizarea eficientă a cârligelor de acțiune personalizate în teme. Să începem să implementăm o verificare tematică personalizată.

În interiorul folderului plugin personalizat, creați o nouă clasă PHP și implementați interfața cu detaliile discutate în secțiunile anterioare. Cea mai ușoară modalitate este să copiați o verificare tematică existentă și să schimbați funcția de verificare și inițializarea. Luați în considerare următorul cod pentru implementarea verificării cârligelor de acțiune personalizate.

  __( 'Vedea: ',' themecheck '),' do_action \ (\ s? ('| \') sample_action2 ("| \ ') \ s? \" ',' themecheck ')); foreach ($ verifică ca $ key => check $) checkcount (); dacă ($ key === 'do_action \ (\ s? (' | \ ') sample_action1 ("| \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\) s \) ') $ key = __ (' do_action (\ 'sample_action1 \') ',' themechek ');  dacă $ key === 'do_action \ (\ s? (' | \ ') sample_action2 ("| \') \ s? \" ') $ key = ',' themechek ');  $ key = ltrim (trim ((cheie ($, '('), '\\')); $ this-> error [] = sprintfNECESAR: Nu am putut gasi % 1 $ s. % 2 $ s ',' themecheck '), $ cheie, $ check); $ ret = false;  returnează $ ret;  funcția getError () return $ this-> error;  $ themechecks [] = noi CustomActions; ?>

În această verificare personalizată, am inclus expresii regulate pentru a valida două cârlige personalizate de acțiune numite sample_action1 și sample_action2. După ce se găsește un meci, definim o cheie prietenoasă care să fie afișată utilizatorului în locul expresiilor regulate originale. Dacă o comparați cu verificările existente, veți observa că expresiile și mesajele regulate ale funcției de verificare sunt singurele lucruri care au fost modificate.

În cele din urmă, putem adăuga noi verificări utilizând o altă implementare a acțiunii, după cum se arată în codul următor.

 funcția custom_new_themecheck_loadeder () global $ themechecks; include_once 'custom_actions.php';  add_action ('themecheck_checks_loaded', 'custom_new_themecheck_loadeder');

Acum puteți integra propriile dvs. verificări de teme în pluginul Theme Check.


Când să utilizați Tematica de verificare

Tematica de verificare este dezvoltată pentru a valida teme în raport cu ghidurile de dezvoltare a temelor WordPress. Prin urmare, se va concentra în principal pe preocupările legate de securitate și pe păstrarea unui format și a unor caracteristici consecvente.

Putem folosi acest plugin dintr-o perspectivă diferită pentru a adăuga caracteristici așa cum se arată în ultima secțiune. Dacă sunteți expert în expresii regulate, este posibil să creați o verificare tematică avansată cu acest instrument uimitor.

Depinde de dvs. să decideți când să utilizați verificări tematice personalizate. Desigur, acest lucru este mai important pentru dezvoltatorii temelor decât pentru utilizatorii de teme WordPress.

Mă pot gândi la două scenarii majore în care verificările tematice personalizate pot deveni utile.

Menținerea unui cadru de bază

Nu cred că orice dezvoltator va dezvolta fiecare temă WordPress de la zero. Cel mai adesea, dezvoltatorii își păstrează propriul cadru tematic de bază și construiesc diverse proiecte pe această temă.

Deci, controalele tematice personalizate vor fi destul de utile pentru a menține coerența unui cadru de bază pentru toate temele. Puteți valida lucruri precum formate de imagine, mărimi, coduri scurte, acțiuni etc. în cadrul dvs. propriu.

Dezvoltarea de teme dincolo de bloguri

În general, cele mai multe teme WordPress sunt concepute pentru a se potrivi unui tip de blogging de temă. WordPress oferă cârlige de acțiune integrate pentru caracteristicile blogului și, prin urmare, nu vom avea dificultăți în a le extinde.

Cu toate acestea, pot exista scenarii în care dezvoltați teme pentru aplicații, cum ar fi site-uri de postare de locuri de muncă, căruțe de cumpărături, sisteme de gestionare a evenimentelor etc. Aceste teme au secțiuni și caracteristici complet diferite în comparație cu blogurile. WordPress nu oferă funcții încorporate pentru astfel de teme. Prin urmare, ar fi o idee bună să implementăm cârlige de acțiune în interiorul unor astfel de teme și să le validăm cu Tematica de verificare.


Concluzie

Sper că ați învățat importanța Temei de verificare și cum putem să o folosim pentru a păstra consecvența asupra temelor noastre.

Aș dori să știu dacă ați folosit acest plugin și ce fel de verificări tematice personalizate ați implementat pentru a vă extinde caracteristicile.

Simțiți-vă libertatea de a vă distribui sugestiile și întrebările în secțiunea de comentarii de mai jos.

Cod