Come utilizzare i tag condizionali in WordPress

Pubblicato: 2020-06-09

Una delle cose che mi piace di più di WordPress è che include molte funzioni che semplificano notevolmente il nostro lavoro di sviluppatori. Ad esempio, considera funzioni come esc_attr , che esegue l'escape del testo in modo che possa essere aggiunto in modo sicuro in un attributo di tag HTML, o esc_html , che esegue l'escape del testo in modo che possa essere incluso in modo sicuro in una pagina HTML. Oppure dai un'occhiata ad alcune delle funzioni che abbiamo per sanificare i dati che riceviamo da un utente: sanitize_text_field , sanitize_textarea_field o sanitize_email . Ti abitui così tanto a queste funzioni ben definite che ti mancano davvero quando devi sviluppare qualcosa al di fuori del regno di WordPress e scopri che non sono più disponibili!

La raccolta di funzioni che abbiamo a nostra disposizione quando sviluppiamo su WordPress è incredibilmente ampia. E più abbiamo familiarità con loro, più facile sarà scrivere codice di alta qualità.

Oggi vorrei parlarvi dei tag condizionali in WordPress: cosa sono, come usarli, cosa può essere fuorviante al riguardo e perché sono così utili. Se sei uno sviluppatore di plugin o temi e non li conosci ancora, non perdere questo post.

Quali sono i tag condizionali di WordPress?

I tag condizionali sono funzioni definite in WordPress il cui risultato è un valore booleano (cioè true o false ). Queste sono funzioni che possiamo utilizzare sia nei nostri plugin che nei nostri temi per prendere decisioni condizionali in base al contenuto che stiamo per rendere.

Ciò che rende eccezionali i tag condizionali è che, in generale, i loro nomi sono autoesplicativi e generano un codice molto facile da capire. Ad esempio, se utilizzi il tag condizionale is_sticky nel tuo plug-in, verrà chiaramente restituito true se, all'interno del ciclo di WordPress, stiamo elaborando un post appiccicoso . Nessun dubbio sulla sua semantica, giusto?

Prima di iniziare con alcuni esempi, tieni presente che i tag condizionali sono disponibili solo dopo che WordPress ha determinato il contenuto richiesto dal visitatore. Se proviamo a usarli prima, il loro risultato sarà sempre false . In altre parole, possiamo usarli solo dopo che l'azione posts_selection è stata eseguita.

Tag condizionali più comuni

La maggior parte dei tag condizionali in WordPress iniziano con is_ , poiché la risposta a una domanda come "è bla bla?" è un valore booleano: "sì" o "no". Ma, purtroppo, questo criterio non è sempre seguito (come vedremo più avanti).

Ci sono molti tag condizionali all'interno di WordPress con cui acquisirai familiarità quando ne avrai bisogno. Ma ce ne sono alcuni estremamente comuni e prima li conosci, meglio è. Quindi diamo un'occhiata più da vicino a quelli:

  • is_single . Verifica se l'elemento corrente è un post di WordPress o un'istanza di qualsiasi altro tipo di post personalizzato (come, ad esempio, un prodotto WooCommerce).
  • is_page . Verifica se l'elemento corrente è una pagina WordPress.
  • is_attachment . Verifica se l'elemento corrente è un allegato. Gli allegati sono quei file che carichi nella tua Libreria multimediale, come immagini, video, file, ecc.
  • is_singular . Verifica se una qualsiasi delle tre funzioni precedenti è true . Cioè, controlla se l'elemento corrente è un post, una pagina, un allegato o qualsiasi altro tipo di post.
  • comments_open . Restituisce true se i visitatori possono commentare l'elemento corrente. Vedere? Ecco un esempio in cui il tag condizionale non inizia con is_ .
  • is_category . Verifica se stiamo attualmente esaminando una pagina di archivio di categorie.
  • in_category . Restituisce true se il post corrente è nella categoria specificata.
  • is_tag . Verifica se stiamo attualmente esaminando una pagina di archivio di tag.
  • has_tag . Verifica se il post corrente è contrassegnato utilizzando il tag specificato.
  • is_main_query . Controlla se siamo nel ciclo principale di WordPress.

Sapevi che esistono tag condizionali che possono essere fuorvianti?

Ci sono alcuni casi in cui i tag condizionali hanno nomi che possono creare confusione poiché ciò che sembrano valutare e ciò che effettivamente valutano sono cose diverse:

  • is_admin . Potresti pensare che questa funzione controlli se l'utente corrente è un amministratore, giusto? Sbagliato! Controlla se siamo in una pagina all'interno della dashboard di WordPress (e quindi il risultato sarebbe true ) o nel front-end (cioè false ).
  • is_home . Pensavo che questa funzione controllasse se la pagina corrente è la tua home page. Ad esempio, nel nostro sito Web, sarebbe https://neliosoftware.com . Ma purtroppo non è così. WordPress è nato come piattaforma di blogging e penso che questo sia un esempio di qualche "codice legacy". is_home è una funzione condizionale che controlla se la pagina corrente è la tua pagina del blog . Pertanto, ad esempio, se stai utilizzando l'impostazione predefinita di WordPress, is_home restituisce true quando un visitatore è nella home page ( https://yourweb.com ), perché quella pagina mostra i tuoi ultimi post del blog. Ma se imposti la pagina del tuo blog su qualcos'altro (come https://yourweb.com/blog ), allora is_home sarà true quando il visitatore richiede https://yourweb.com/blog e false in caso contrario.
  • is_front_page . E questo è il tag condizionale che ti farà sapere quando il visitatore è nella "home page".
  • is_dynamic_sidebar . Questa funzione controlla se il tuo tema ha una o più barre laterali dei widget e, in tal caso, restituirà true se almeno una di quelle barre laterali non è vuota.

Parametrizzazione dei tag condizionali

Sebbene la maggior parte dei tag condizionali siano funzioni che possono essere richiamate senza parametri, molti di essi supportano i parametri. Se li utilizziamo, possiamo essere più specifici sui criteri che il post corrente dovrebbe soddisfare. E lo fanno in un modo abbastanza logico.

A seconda della funzione specifica che stiamo usando, potremmo voler controllare se l'elemento corrente ha un certo ID o un certo slug, se è un'istanza di un certo tipo di post, o anche se ha un titolo specifico. Per esempio:

  • is_singular( 'product' ) controlla se l'elemento corrente è un prodotto .
  • is_page( 'Contact Us' ) controlla se il titolo della pagina corrente è "Contattaci". Questa funzione accetta diversi tipi di argomenti e, a seconda di ciò che fornisci, verificherà una cosa o l'altra. Ad esempio, puoi controllare se l'elemento corrente ha un certo ID o un certo titolo o slug. Abbastanza pulito, eh? Puoi persino usare le liste come parametri!
  • is_single( [ 5, 10, 11 ] ) controlla se l'ID dell'elemento corrente è 5, 10 o 11. È abbastanza simile a is_page , ma, come abbiamo detto prima, funziona per post diversi da page.

Come utilizzare i tag condizionali

Diamo un'occhiata a un paio di esempi in cui i tag condizionali potrebbero tornare utili.

Personalizzazione dei modelli

Come probabilmente hai previsto, i tag condizionali sono ovviamente utili nei temi. Se vuoi che il tema mostri un'informazione o un'altra a seconda del tipo di contenuto visualizzato in un dato momento (e questo è qualcosa che vorremo fare spesso), i tag condizionali sono tuoi alleati:

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

Ciò ti consente di utilizzare lo stesso modello per diversi tipi di contenuto e di personalizzare ciascuno di essi con tag condizionali.

Risorse con accodamento condizionale

Ma i tag condizionali sono estremamente utili anche per gli sviluppatori di plugin. In particolare, ci aiutano a caricare parti del nostro plugin in modo condizionale, a seconda dei risultati che otteniamo dai tag condizionali.

Ad esempio, immagina che stiamo sviluppando un plug-in che aggiunge una sorta di funzionalità ai nostri post sul blog. Supponiamo che questa funzionalità richieda di accodare uno script e un foglio di stile al front-end. Per accodare script e stili in WordPress abbiamo un filtro chiamato 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' );

Il problema con lo snippet precedente è che mette sempre in coda le nostre risorse, indipendentemente da ciò che il visitatore ha richiesto. Ogni volta che viene eseguito wp_enqueue_scripts (e lo fa in ogni richiesta front-end), verrà chiamata la nostra funzione di callback e verranno aggiunti il ​​nostro script e foglio di stile. Ma abbiamo detto che la nostra funzione riguarda solo i post del blog, quindi... abbiamo davvero bisogno di mettere sempre in coda queste risorse? Ovviamente no! E possiamo migliorarlo usando il tag condizionale appropriato:

 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' );

In sintesi

I tag condizionali di WordPress ci consentono di testare diversi criteri del nostro contenuto e quindi adattare ciò che accadrà in base a quello. Nonostante la loro estrema semplicità, sono funzioni molto utili che rendono il nostro codice più intelligibile ed efficiente.

Spero che tu abbia imparato qualcosa oggi e, come sempre, se hai domande o commenti, faccelo sapere nella sezione commenti qui sotto.

Immagine in primo piano di Justin Luebke su Unsplash.