Cum să utilizați etichetele condiționate în WordPress

Publicat: 2020-06-09

Unul dintre lucrurile care îmi plac cel mai mult la WordPress este că include o mulțime de funcții care simplifică foarte mult munca noastră ca dezvoltatori. De exemplu, luați în considerare funcții precum esc_attr , care scapă text, astfel încât acesta să poată fi adăugat în siguranță într-un atribut de etichetă HTML, sau esc_html , care scapă text, astfel încât să poată fi inclus în siguranță într-o pagină HTML. Sau aruncați o privire la câteva dintre funcțiile pe care le avem pentru a igieniza datele pe care le primim de la un utilizator: sanitize_text_field , sanitize_textarea_field sau sanitize_email . Te obișnuiești atât de mult cu aceste funcții bine definite încât îți lipsesc cu adevărat atunci când trebuie să dezvolți ceva în afara domeniului WordPress și să descoperi că nu mai sunt disponibile!

Colecția de funcții pe care o avem la dispoziție atunci când dezvoltăm pe WordPress este incredibil de mare. Și cu cât suntem mai familiarizați cu ele, cu atât este mai ușor să scriem cod de înaltă calitate.

Astăzi aș dori să vă spun despre etichetele condiționate din WordPress: ce sunt, cum să le folosiți, ce poate fi înșelător la ele și de ce sunt atât de utile. Dacă ești un dezvoltator de pluginuri sau teme și nu le cunoști încă, nu rata această postare.

Ce sunt etichetele condiționate ale WordPress?

Etichetele condiționate sunt funcții definite în WordPress al căror rezultat este o valoare booleană (adică este fie true , fie false ). Acestea sunt funcții pe care le putem folosi atât în ​​pluginurile, cât și în temele noastre pentru a lua decizii condiționate în funcție de conținutul pe care urmează să-l redăm.

Ceea ce face ca etichetele condiționate să fie grozave este că, în general, numele lor se explică de la sine și rezultă într-un cod foarte ușor de înțeles. De exemplu, dacă utilizați eticheta condiționată is_sticky în pluginul dvs., va returna în mod clar true dacă, în bucla WordPress, procesăm o postare lipicioasă . Fără îndoială despre semantica sa, nu?

Înainte de a începe cu câteva exemple, vă rugăm să rețineți că etichetele condiționate sunt disponibile numai după ce WordPress a determinat conținutul solicitat de vizitator. Dacă încercăm să le folosim înainte, rezultatul lor va fi întotdeauna false . Cu alte cuvinte, le putem folosi doar după ce acțiunea posts_selection a fost executată.

Cele mai comune etichete condiționate

Majoritatea etichetelor condiționate din WordPress încep cu is_ , deoarece răspunsul la o întrebare precum „este bla bla?” este o valoare booleană: fie „da” fie „nu”. Dar, din păcate, acest criteriu nu este întotdeauna respectat (cum vom vedea mai jos).

Există multe etichete condiționate în WordPress cu care vă veți familiariza pe măsură ce aveți nevoie de ele. Dar există destul de multe care sunt extrem de comune și cu cât le cunoașteți mai repede, cu atât mai bine. Deci, să aruncăm o privire mai atentă la acestea:

  • is_single . Acesta verifică dacă elementul curent este o postare WordPress sau o instanță a oricărui alt tip de postare personalizată (cum ar fi, de exemplu, un produs WooCommerce).
  • is_page . Verifică dacă elementul curent este o pagină WordPress.
  • is_attachment . Verifică dacă elementul curent este un atașament. Atașamentele sunt acele fișiere pe care le încărcați în Biblioteca dvs. media, cum ar fi imagini, videoclipuri, fișiere etc.
  • is_singular . Acesta verifică dacă oricare dintre cele trei funcții anterioare este true . Adică, verifică dacă elementul curent este o postare, o pagină, un atașament sau orice alt tip de postare.
  • comments_open . Revine true dacă vizitatorii pot comenta elementul curent. Vedea? Aici aveți un exemplu în care eticheta condiționată nu începe cu is_ .
  • is_category . Verifică dacă ne uităm în prezent la o pagină de arhivă de categorii.
  • in_category . Returnează adevărat dacă postarea curentă este în categoria dată.
  • is_tag . Verifică dacă în prezent ne uităm la o pagină de arhivă de etichete.
  • has_tag . Verifică dacă postarea curentă este etichetată folosind eticheta specificată.
  • is_main_query . Verifică dacă ne aflăm în bucla principală a WordPress.

Știați că există etichete condiționate care pot induce în eroare?

Există unele cazuri în care etichetele condiționate au nume care ne pot duce la confuzie, deoarece ceea ce par să evalueze și ceea ce evaluează de fapt sunt lucruri diferite:

  • is_admin . Ai putea crede că această funcție verifică dacă utilizatorul actual este administrator, nu? Gresit! Verifică dacă ne aflăm într-o pagină din WordPress Dashboard (și apoi rezultatul ar fi true ) sau în front-end (adică false ).
  • is_home . Obișnuiam să cred că această funcție verifică dacă pagina curentă este pagina ta de pornire. De exemplu, pe site-ul nostru web, ar fi https://neliosoftware.com . Dar, din păcate, nu este cazul. WordPress s-a născut ca o platformă de blogging și cred că acesta este un exemplu de „cod moștenit”. is_home este o funcție condiționată care verifică dacă pagina curentă este pagina ta de blog . Astfel, de exemplu, dacă utilizați configurația implicită a WordPress, is_home returnează într-adevăr true atunci când un vizitator se află pe pagina de pornire ( https://yourweb.com ), deoarece acea pagină afișează cele mai recente postări pe blog. Dar dacă setați pagina de blog la altceva (cum ar fi https://yourweb.com/blog ), atunci is_home va fi true atunci când vizitatorul solicită https://yourweb.com/blog și false în caz contrar.
  • is_front_page . Și aceasta este eticheta condiționată care vă va anunța când vizitatorul se află în „pagina de pornire”.
  • is_dynamic_sidebar . Această funcție verifică dacă tema dvs. are una sau mai multe bare laterale de widget și, dacă are, va returna true dacă cel puțin una dintre acele bare laterale nu este goală.

Parametrizarea etichetelor condiționale

Deși majoritatea etichetelor condiționate sunt funcții care pot fi apelate fără parametri, multe dintre ele acceptă parametri. Dacă le folosim, putem fi mai specifici cu privire la criteriile pe care ar trebui să le îndeplinească postul curent. Și fac asta într-un mod destul de logic.

În funcție de funcția specifică pe care o folosim, ar putea dori să verificăm dacă elementul curent are un anumit ID sau un anumit slug, dacă este o instanță a unui anumit tip de postare sau chiar dacă are un anumit titlu. De exemplu:

  • is_singular( 'product' ) verifică dacă elementul curent este un produs .
  • is_page( 'Contact Us' ) verifică dacă titlul paginii curente este „Contactați-ne”. Această funcție acceptă diferite tipuri de argumente și, în funcție de ceea ce furnizați, va verifica unul sau altul. De exemplu, puteți verifica dacă elementul curent are un anumit ID sau un anumit titlu sau slug. Destul de îngrijit, nu? Puteți folosi chiar și liste ca parametri!
  • is_single( [ 5, 10, 11 ] ) verifică dacă ID-ul elementului curent este fie 5, 10 sau 11. Este destul de asemănător cu is_page , dar, așa cum am spus mai înainte, funcționează pentru alte postări decât pagina.

Cum să utilizați etichetele condiționate

Să aruncăm o privire la câteva exemple în care etichetele condiționate ar putea fi utile.

Personalizarea șabloanelor

După cum probabil ați prevăzut, etichetele condiționate sunt în mod evident utile în teme. Dacă doriți ca tema să arate o informație sau alta în funcție de tipul de conținut care este vizualizat la un moment dat (și acest lucru este ceva ce vom dori să facem des), etichetele condiționate sunt aliații dvs.:

 <?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...

Acest lucru vă permite să utilizați același șablon pentru diferite tipuri de conținut și să personalizați fiecare dintre ele cu etichete condiționate.

Punerea în coadă condiționată a activelor

Dar etichetele condiționate sunt extrem de utile și dezvoltatorilor de pluginuri. Mai exact, ele ne ajută să încărcăm condiționat părți ale pluginului nostru, în funcție de rezultatele pe care le obținem de la etichetele condiționate.

De exemplu, imaginați-vă că dezvoltăm un plugin care adaugă un fel de funcționalitate postărilor noastre de blog. Să presupunem că această funcționalitate necesită să punem în coadă un script și o foaie de stil la front-end. Pentru a pune în coadă scripturi și stiluri în WordPress avem un filtru numit wp_enqueue_scripts :

 function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

Problema cu fragmentul anterior este că ne pune întotdeauna în coadă activele, indiferent de ce a solicitat vizitatorul. Ori de câte ori rulează wp_enqueue_scripts (și se întâmplă în fiecare cerere front-end), funcția noastră de apel invers va fi apelată și vor fi adăugate scriptul și foaia de stil. Dar am spus că funcția noastră afectează numai postările de blog, așa că... chiar trebuie să punem în coadă aceste active întotdeauna? Desigur că nu! Și putem îmbunătăți acest lucru utilizând eticheta condiționată corespunzătoare:

 function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );

În concluzie

Etichetele condiționale ale WordPress ne permit să testăm diferite criterii ale conținutului nostru și astfel adaptăm ceea ce se va întâmpla pe baza acestuia. În ciuda simplității lor extreme, sunt funcții foarte utile care fac codul nostru mai inteligibil și mai eficient.

Sper că ați învățat ceva astăzi și, ca întotdeauna, dacă aveți întrebări sau comentarii, vă rugăm să ne spuneți în secțiunea de comentarii de mai jos.

Imagine prezentată de Justin Luebke pe Unsplash.