I tag condizionali di WordPress sono una fantastica funzionalità di WordPress che ti consente di controllare quali contenuti vengono visualizzati in una pagina. Esistono tag condizionali per diverse aree del tuo sito web come la home page, i post del blog e le pagine. Questo ti permette di cambiare ciò che viene visualizzato sul tuo sito web. Ad esempio, potresti cambiare il logo del tuo sito web in diverse aree del tuo sito web.
In questo tutorial, spiegherò quali tag condizionali sono disponibili per te e ti mostrerò come possono essere utilizzati in temi e plugin.
Come funzionano i tag condizionali di WordPress
I tag condizionali sono un tipo di dato booleano che può restituire solo vero o falso. Il tag is_home(), ad esempio, si riferisce all'indice del blog. Possiamo usare questo tag per visualizzare un messaggio ai visitatori del nostro blog. Questo messaggio non verrà visualizzato altrove.
Il codice è semplice. Tutto ciò che stiamo facendo di seguito è verificare se la pagina mostrata è la pagina dell'indice del blog. Se lo è, visualizziamo il nostro messaggio.
<?php
if ( is_home()) {
echo "Welcome to Our Blog!!";
}
?>
Quanto sopra è un esempio di base di ciò che si può ottenere utilizzando i tag condizionali, tuttavia, essenzialmente è tutto qui. Stai semplicemente controllando il tipo di pagina che viene visualizzata. A seconda che il risultato sia vero o falso, viene eseguito un altro pezzo di codice.
Prima di esaminare altri esempi di come possono essere utilizzati i tag condizionali, diamo prima un'occhiata ai tag condizionali più diffusi che probabilmente vedrai utilizzati nei tuoi temi WordPress.
- is_home() – Verifica se viene visualizzato l'indice dei post del blog. Questa potrebbe o non potrebbe essere anche la tua home page.
- is_front_page() – Verifica se la tua home page viene visualizzata. Questo funziona sia che le impostazioni della tua home page siano impostate per visualizzare i post del blog (cioè l'indice del blog) sia una pagina statica.
- is_single() – Verifica se viene visualizzato un qualsiasi tipo di post singolo (esclusi gli allegati).
- is_attachment() – Verifica se viene visualizzato un allegato.
- is_page() – Verifica se viene visualizzata una pagina.
- is_singular() – Verifica se viene visualizzato un singolo post, allegato o pagina. Viene restituito vero se una di queste condizioni è soddisfatta.
- is_category() – Verifica se viene visualizzata una pagina di archivio di categoria.
- is_search() – Verifica se viene visualizzata una pagina dei risultati di ricerca.
- is_tag() – Verifica se viene visualizzato un archivio di tag.
- is_author() – Verifica se viene visualizzata una pagina di archivio autore.
- is_archive() – Verifica se viene visualizzata una qualsiasi pagina di archivio, inclusi archivi di categorie, tag, date e autori.
- is_sticky() – Verifica se un post è stato definito come in evidenza.
- is_multi_author() – Verifica se più di un autore ha pubblicato post sul sito web. Viene restituito vero se due o più persone hanno pubblicato post. Se solo un autore ha pubblicato post, o se non sono stati pubblicati post, viene restituito falso.
Ci sono sei tag condizionali basati sul tempo che troverai anche utili. Questi tag si riferiscono alle pagine di archivio delle date. Ad esempio, l'URL http://www.tuosito.com/2013/12/ è una pagina di archivio basata sul mese.
Se uno qualsiasi dei seguenti tag condizionali restituisce true, anche is_archive() restituirebbe true.
- is_date() – Verifica se si tratta di una pagina di archivio basata sulla data.
- is_year() – Verifica se si tratta di una pagina di archivio basata sull'anno.
- is_month() – Verifica se si tratta di una pagina di archivio basata sul mese.
- is_day() – Verifica se si tratta di una pagina di archivio basata sul giorno.
- is_time() – Verifica se si tratta di una pagina di archivio basata sull'ora.
- is_new_day() – Verifica se oggi è un nuovo giorno. Se il post corrente è stato pubblicato in un giorno diverso rispetto al post precedente, restituirebbe true. Verrà restituito false se entrambi i post sono stati pubblicati nello stesso giorno.
Incontrerai frequentemente tag condizionali come is_home() e is_single(), tuttavia non è necessario ricordare tutti questi tag condizionali. La maggior parte degli utenti WordPress fa riferimento al codex di WordPress per il tag condizionale appropriato quando hanno bisogno di impostare una funzione condizionale.
Esempi di tag condizionali
Molti tag condizionali consentono di passare parametri alla funzione. Questo ti dà molto più controllo su quali condizioni devono essere soddisfatte prima che qualcosa venga eseguito. is_page() ne è un buon esempio. Il tag ti consente di verificare se la pagina visualizzata è una pagina. is_page() restituirà un valore true se viene visualizzata una qualsiasi pagina, tuttavia devi specificare il parametro $page se vuoi essere più specifico. Il parametro $page può essere l'ID della pagina, il titolo della pagina o lo slug della pagina.
Consideriamo un sito web normale che ha una pagina "Chi siamo" e vuoi personalizzare la pagina "Chi siamo" in modo diverso da tutte le altre pagine. Ad esempio, potresti visualizzare una fotografia della tua azienda nella parte superiore della barra laterale, oppure potresti visualizzare informazioni aggiuntive nella parte inferiore della pagina "Chi siamo".
Per fare ciò, devi definire il parametro $page. Se l'ID della pagina fosse 10, potresti aprire la tua istruzione condizionale con qualcosa di simile a questo:
if ( is_page(10) ) {
È anche possibile specificare una pagina specifica passando il titolo della pagina alla funzione.
if ( is_page( 'About Us' ) ) {
Può anche essere utilizzato lo slug della pagina. Come potresti ricordare, lo slug della pagina è l'identificatore univoco alla fine dell'URL. Se l'URL della tua pagina "Chi siamo" fosse www.tuosito.com/chi-siamo/, lo slug della pagina sarebbe chi-siamo.
if ( is_page( 'about-our-company' ) ) {
Alcuni tag condizionali, come is_page(), possono anche passare parametri in un array. La seguente istruzione condizionale restituirà un valore true se una delle condizioni è vera.
if ( is_page( array( 10, 'About Us', 'about-our-company' ) ) ) {
È comune per gli sviluppatori impostare più di una condizione quando si utilizzano i tag condizionali. Torniamo al semplice compito di visualizzare un messaggio di benvenuto ai visitatori del blog. Questo è qualcosa che un sito web aziendale potrebbe voler aggiungere alla propria area blog ma non ad altre aree del proprio sito web (ad esempio, home page, pagina contatti, pagina chi siamo, ecc.).
Possono farlo utilizzando i tag condizionali is_home() e is_single(); che rappresentano rispettivamente l'indice del blog e i singoli post. Per visualizzare un messaggio in entrambe le aree, è necessario utilizzare l'operatore logico OR ||. Questo è illustrato nel codice seguente. L'istruzione if iniziale verifica se la pagina è l'indice del blog o un post singolo. Se una delle due è vera, viene visualizzato il messaggio.
<?php
if ( is_home() || is_single() ) {
echo "Welcome to Our Blog!!";
}
?>
Un altro operatore logico molto utile è l'operatore AND &&. Questo viene utilizzato quando si desidera che due o più condizioni siano vere prima che qualcosa venga eseguito. La seguente istruzione if verifica se una pagina è sia una pagina di archivio sia categorizzata sotto la categoria news. Nelle pagine della categoria news verrà visualizzato il messaggio di benvenuto. Non verrà visualizzato nulla in altre categorie.
<?php
if ( is_archive() && is_category( 'News' ) ) {
echo "Welcome to the News Archives";
}
?>
Gli operatori AND e OR possono essere combinati. L'esempio seguente è tratto dal file functions.php del tema WordPress predefinito Twenty Thirteen. La funzione viene utilizzata per visualizzare il titolo della pagina nel browser, tuttavia viene mostrata solo una parte della funzione di seguito.
L'istruzione if restituisce un valore true se esiste una descrizione del sito e l'utente sta visualizzando l'indice del blog o la home page. La descrizione del sito può essere inserita tramite il campo tagline nelle impostazioni generali. Se completi questo campo, sull'indice del blog e sulla home page la barra del titolo visualizzerà "Titolo del sito | Descrizione del sito" (nota: il separatore viene visualizzato utilizzando la stringa $sep nel codice sottostante). Se non lo fai, la barra del titolo visualizzerà "Titolo del sito".
Come puoi vedere, is_home e _is_front_page sono visti come un'unica entità a causa dell'operatore OR. Ecco perché sono racchiusi tra parentesi.
if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description";
Un altro operatore logico PHP che puoi usare è l'operatore not !. Questo è più pratico da usare in molte circostanze. Ad esempio, supponiamo che tu voglia visualizzare una fotografia su tutte le tue pagine tranne gli archivi. Non è necessario impostare una lunga istruzione condizionale che chieda "È questa la home page, è questo un post singolo, è questa una pagina...". È più pratico semplicemente chiedere "Questa non è una pagina di archivio?".
Per fare ciò, aggiungi semplicemente un punto esclamativo prima del tag condizionale. Il codice seguente mostra quanto sia semplice in pratica. Visualizzerà un'immagine su ogni pagina del tuo sito web tranne le pagine di archivio.
<?php
if ( !is_archive() ) { ?>
<img src="photo.jpg" />
<?php
}
?>
Fino ad ora, abbiamo esaminato esempi di base di tag condizionali utilizzati dove qualcosa viene eseguito o non viene eseguito (cioè se A è vero, fai B). In pratica, di solito c'è un'altra azione da fare se una condizione non viene soddisfatta. Inoltre, potrebbero esserci diverse condizioni che possono essere soddisfatte, con una risposta diversa per ciascuna.
Invece di scrivere molte istruzioni individuali per questo, è pratico utilizzare le istruzioni else e elseif. Questo ti consente un maggiore controllo su ciò che viene visualizzato sul tuo sito web.
Possiamo mostrarlo usando un esempio. Supponiamo che tu voglia mostrare un logo diverso sul tuo sito web in diverse aree del tuo sito web. Come faresti? La risposta è semplice: usiamo le istruzioni else e elseif. Il codice seguente mostra come questo può essere ottenuto.
<?php
if ( is_home() || is_front_page() ) { ?>
<img src="logo-home.png" />
<?php
} elseif ( is_category() ) { ?>
<img src="logo-category.png" />
<?php
} elseif ( is_single() ) { ?>
<img src="logo-blog-post.png" />
<?php
} elseif ( is_page() ) { ?>
<img src="logo-page.png" />
<?php
}
else { ?>
<img src="logo-general.png" />
<?php
}
?>
A seconda dell'area del sito web visualizzata da un visitatore, verrebbe visualizzato uno dei cinque loghi utilizzando il codice sopra. È un esempio di base che illustra quanto facilmente le istruzioni else e elseif possano essere utilizzate per controllare molte aree diverse del tuo sito web.
Le istruzioni Elseif sono utilizzate anche in altre parti di WordPress. La maggior parte dei template di functions.php le utilizza e molti temi di WordPress le utilizzano per modificare il modo in cui il titolo del loro sito web viene visualizzato nei browser.
Altri tag condizionali
Sono disponibili numerosi tag condizionali aggiuntivi. Molti di questi sono utilizzati dagli sviluppatori nei temi e nei plugin.
Di seguito è riportato un elenco di alcuni degli altri tag condizionali disponibili.
- is_tax() – Verifica se viene visualizzata una pagina di archivio di tassonomia personalizzata.
- has_term() – Verifica se il post corrente ha uno dei termini specificati.
- taxonomy_exists() – Verifica se il nome della tassonomia esiste.
- post_type_exists() – Verifica se un tipo di post esiste.
- is_post_type_hierarchical( $post_type ) – Verifica se il tipo di post è gerarchico.
- is_post_type_archive() – Verifica se viene visualizzata la pagina di archivio di un tipo di post specifico.
- is_comments_popup() – Verifica se la finestra popup dei commenti è aperta.
- comments_open() – Verifica se i commenti sono consentiti per il post o la pagina corrente.
- pings_open() – Verifica se i ping sono consentiti per il post o la pagina corrente.
- is_feed() – Verifica se la query corrente è per un feed.
- is_404() – Verifica se viene visualizzato un errore 404.
- is_paged() – Verifica se la pagina che stai visualizzando è una pagina impaginata diversa dalla prima. Post e pagine vengono impaginati quando si utilizza il tag rapido nextpage nel contenuto per suddividere post di grandi dimensioni.
- is_trackback() – Verifica se viene utilizzato un trackback.
- is_admin() – Verifica se l'utente ha effettuato l'accesso all'area di amministrazione. Non viene utilizzato per verificare se un utente ha privilegi di amministratore, ma solo se ha effettuato l'accesso alla dashboard di WordPress.
- is_page_template() – Verifica se la pagina visualizzata utilizza un template di pagina. È possibile definire un template di pagina specifico, se necessario.
- is_preview() – Verifica se un post del blog viene visualizzato in modalità bozza.
- has_excerpt() – Verifica se il post corrente ha un estratto. È possibile definire post specifici.
- has_nav_menu() – Verifica se una posizione del menu ha un menu assegnato. Questo viene utilizzato dagli sviluppatori di temi per mostrare qualcosa nel caso in cui l'utente non abbia aggiunto un menu.
- in_the_loop() – Verifica se il chiamante si trova ancora all'interno del loop di WordPress.
- is_active_sidebar( $index ) – Verifica se una data barra laterale è in uso.
- is_multisite() – Verifica se il multisito è supportato.
- is_main_site() – Verifica se un multisito è il sito principale della rete.
- is_super_admin() – Verifica se un utente è un super amministratore all'interno della rete.
- is_plugin_active( $plugin ) – Verifica se un plugin è attivato.
- is_child_theme() – Verifica se è in uso un tema figlio.
- current_theme_supports( $feature ) – Verifica se un tema supporta una funzionalità specifica come i formati dei post o le immagini in evidenza.
Controlla anche: Come rimuovere le tassonomie predefinite.
I tag condizionali sono un concetto importante di WordPress. Data la loro utilità, ci sono pochi temi WordPress progettati senza di essi. Una volta compresi gli statement else, elseif e gli operatori logici come AND, OR e Not, sarai in grado di affrontare qualsiasi funzione condizionale.
Spero che questa guida ti abbia aiutato a imparare come usare i tag condizionali di WordPress nei tuoi temi.
Se ti è piaciuto questo articolo, unisciti a IsItWP su Twitter.
Ciao, sto riscontrando un problema nell'esecuzione dell'istruzione condizionale…
if ( is_home() || is_front_page() || is_page_template(‘templates/template-home.php’) ) { // } elseif ( is_page() && $inner_disable == ‘disable’ ) { // } elseif (is_singular( array( ‘products’ ) ) ) { trav_get_template( ‘inner-3.php’, ‘/templates/inners’ ); }////funziona elseif ( is_page() && is_page_template( ‘templates/custom-page.php’ ) ) { trav_get_template( ‘inner-p.php’, ‘/templates/inners’ );////ma non ottengo questo risultato... invece ottengo quello sottostante anche per questa condizione. } else { trav_get_template( ‘inner-1.php’, ‘/templates/inners’ ); }
Stai ricevendo un messaggio di errore?
Tranne che l'insegnamento: { ?> con la parentesi graffa all'interno del tag di chiusura php è una sintassi impropria. Fare riferimento ai tutorial di codice WP o PHP.
Questo è un ottimo tutorial. Mi ha aiutato molto nella creazione del mio tema figlio.
Ciao Martin, sono contento che ti sia stato d'aiuto. Seguici su Facebook e Twitter per altri tutorial. :)
Bei consigli. Capire come usare i tag condizionali è un requisito fondamentale per gli sviluppatori WordPress. :)
Grazie per questo, devo fare dei lavori sul sito di un cliente, quindi un link apparirà solo in una certa categoria di negozio, quindi questo sarà utile, grazie.