Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

WordPress: utilizzo dei tag condizionali

Impariamo ad utilizzare i tag condizionali, le funzioni di WordPress che restituiscono un valore booleano a seconda del risultato di una verifica. Senza di essi la maggior parte delle operazioni effettuate da temi e plugin non sarebbe possibile
Impariamo ad utilizzare i tag condizionali, le funzioni di WordPress che restituiscono un valore booleano a seconda del risultato di una verifica. Senza di essi la maggior parte delle operazioni effettuate da temi e plugin non sarebbe possibile
Link copiato negli appunti

I tag condizionali (conditional tags) sono delle funzioni di WordPress che restituiscono un valore booleano (true o false ) a seconda del risultato della verifica effettuata. Tale verifica può essere eseguita su ogni componente o sezione di WordPress. In questo articolo verranno presentati i tag condizionali più utilizzati.

is_home()

Nel caso di is_home() la condizione è vera se si sta visualizzando la home page del sito. Se la pagina principale è una pagina statica occorre invece usare is_front_page() che verrà analizzata di seguito.

is_front_page()

Con is_front_page() la condizione è vera se si sta visualizzando la home page del sito e se la home page è una pagina statica. In pratica possiamo combinare le due funzioni proposte fino ad ora in modo da selezionare sempre la home page:

if( is_home() || is_front_page() ) { ... }

is_admin()

In is_admin() la condizione è vera quando viene visualizzata la sezione amministrativa di WordPress, ossia in /wp-admin.

is_single()

Nel caso di is_single() la condizione è vera quando si visualizza un post singolo. Alcuni esempi di quanto appena descritto potrebbero essere i seguenti:

is_single( 17 )

true quando il post ha come ID 17.

is_single( 'Test' )

true quando il post ha come titolo "Test".

is_single( 'test-slug' )

true quando il post ha come slug (abbreviazione) "test-slug".

is_single( array( 17, 'test-slug', 'Test' ) )

true quando il post ha come ID 17 o come slug "test-slug" o come titolo "Test".

is_single( array( 17, 19, 1, 11 ) )

true quando il post ha come ID uno dei valori indicati nell'array.

is_single( array( 'test-slug', 'slug', 'slug-2' ) )

true quando il post ha come slug uno dei valori indicati nell'array.

is_single( array( 'Test', 'Test 2', 'Test 3' ) )

true quando il post ha come titolo uno dei valori indicati nell'array.

is_sticky()

Con is_sticky() la condizione è vera quando un post è stato marcato come "in evidenza" nel Loop. Questa funzione in genere viene usata nel Loop e in quel caso l'argomento predefinito è l'ID del post corrente. Se invece viene usata fuori dal Loop occorre sempre specificare come argomento l'ID del post sul quale effettuare la verifica.

is_page()

In is_page() la condizione è vera quando si visualizza una pagina. La sintassi e gli esempi per questa funzione sono gli stessi della funzione is_single(); attenzione però, non esiste ancora in WordPress una funzione per stabilire se una pagina è discendente (figlia) di un'altra, ossia se è una sottopagina. Per rimediare a tale mancanza la soluzione è la seguente:

if( is_page() && $post->post_parent > 0 ) { ... }

is_category()

Relativamente a is_category(), la condizione è vera quando si visualizza una categoria. La sintassi e gli esempi per questa funzione sono gli stessi della funzione is_single().

in_category()

Riguardo a in_category(), nel suo caso la condizione è vera quando un post appartiene ad una determinata categoria, ad esempio:

in_category( 5 )

true se il post appartiene alla categoria con ID uguale a 5.

in_category( array( 2, 3, 4 ) )

true se il post appartiene alle categorie con ID uguale ai valori specificati nell'array.

is_tag()

In is_tag() la condizione è vera quando si visualizza l'archivio di un determinato tag, come negli esempi seguenti:

is_tag( 'test' )

true se il tag ha come slug "test".

is_tag( array( 'test', 'test-2', 'test-3' ) )

true se il tag ha come slug uno dei valori specificati nell'array.

has_tag()

has_tag() verifica che un post abbia un determinato tag.

has_tag( 'test' )

true se il post ha "test" come tag.

has_tag( array( 'test', 'test-2', 'test-3' ) )

true se il post ha come tag uno dei valori specificati nell'array.

is_tax()

Con is_tax() si ha true se si sta visualizzando la pagina di archivio di una tassonomia, ad esempio:

is_tax( 'test' )

true se la tassonomia ha come nome "test".

is_tax( 'test', 'slug' );

true se la tassonomia test ha come slug "slug".

is_tax( 'test', array( 'test-1', 'test-2', 'test-3' ) )

true se la tassonomia "test" ha come slug uno dei valori specificati nell'array.

has_term()

Questo tag verifica che un post abbia determinati termini relativi alle sue tassonomie. Il secondo parametro deve essere lo slug o il nome della tassonomia di riferimento; per cui:

has_term( 'test', 'tassonomia' )

true se il post ha il termine "test" per la tassonomia "tassonomia".

has_term( array( 'foo', 'bar', 'baz' ), 'tassonomia' )

true se il post ha uno dei termini specificati nell'array per la tassonomia "tassonomia".

is_author()

Nel caso di is_tax() si ha true quando viene visualizzata la pagina di archivio dei post di un autore; a tal proposito si osservino i seguenti esempi:

is_author( 4 )

true quando l'autore ha come ID utente 4.

is_author( 'Mario' )

true quando il Nickname dell'autore è "Mario".

is_author( 'mario-rossi' )

true quando il Nicename dell'autore è "mario-rossi" (il Nicename dell'autore compare come ultima parte dell'URL della pagina autore).

is_author( array( 4, 'mario-rossi', 'Mario' ) )

true quando l'autore ha come ID utente 4 o ha come Nicename "mario-rossi" o come Nickname "Mario".

is_archive()

Con is_archive() si ha true quando ci troviamo in una pagina d'archivio (categoria, tag, tassonomia, autore ecc.).

Con questo tag condizionale abbiamo true quando stiamo visualizzando la pagina dei risultati della ricerca.

is_404()

true quando il sito Web ha generato una pagina di errore 404 (gestita dal file 404.php nei temi).

is_paged()

true quando una sezione presenta la paginazione dei post creata dopo un Loop.

is_main_query()

Nel caso di is_main_query() viene restituito true quando il Loop creato da una query è il Loop principale del sito. Per Loop principale e query principale si intende sostanzialmente quello che comprende tutti i post del sito. Un uso tipico di questo tag riguarda la creazione di filtri sui post:

function exclude_cat( $query ) {
  if( !is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) ) {
    $query->set( 'cat', '-9' );
  }
}
add_filter( 'pre_get_posts', 'exclude_cat' );

In questo caso abbiamo rimosso la categoria con ID 5 dal Loop principale.

has_excerpt()

Con has_excerpt() si ha true quando un post ha un riassunto (excerpt) impostato nell'editor. La funzione usa l'ID del post corrente nel Loop, mentre fuori dal Loop accetta l'ID del post da testare.

has_post_thumbnail( $id )

In has_post_thumbnail( $id ) si ha true se il post il cui ID viene specificato come parametro ha un'immagine in evidenza impostata.

Utilizzo dei tag condizionali fuori dal Loop

// functions.php
function add_social_media( $content ) {
	$social = social_plugin();
	if( is_page() ) { // qualsiasi pagina
		$content = $social . $content;
	}
	if( is_single() ) { // qualsiasi post singolo
		$content = $content . $social;
	}
	return $content;
}
add_filter( 'the_content', 'add_social_media' );

In questo caso abbiamo effettuato due operazioni diverse a seconda della posizione del contenuto (in una pagina o in un post). Se abbiamo bisogno di maggiore specificità possiamo utilizzare i
parametri di queste funzioni:

// functions.php
function add_scripts() {
	wp_enqueue_script( 'jquery' );
	if( is_page( 8 ) ) { // pagina specifica con ID 8
		wp_register_script( 'google-maps', get_template_directory_uri() . '/js/gmap.js', array( 'jquery' ), '2.0', false );
		wp_enqueue_script( 'google-maps' );
	}
	//...
}
add_action( 'wp_enqueue_scripts', 'add_scripts' );

Utilizzo dei tag condizionali nel Loop

<!-- index.php -->
<?php
    while( have_posts() ) {
    	the_post();
    	$id = get_the_ID();
  ?>
  	<figure class="featured">
  		<?php if( has_post_thumbnail( $id ) ) {
  			the_post_thumbnail();
  		} else { ?>
  			<img src="http://placehold.it/400x300" alt="" />
  		<?php } ?>
  	</figure>
  	<?php
    }
 ?>

In questo caso se i post non hanno un'immagine in evidenza ne imposteremo una predefinita.

Conclusione

I conditional tag si rivelano uno strumento utilissimo e fondamentale in WordPress. Senza di essi la maggior parte delle operazioni effettuate da temi e plugin non sarebbe possibile.

Ti consigliamo anche