Een WordPress thema bestaat over het algemeen uit meerdere paginaweergaven (“views”). Zo heb je bijvoorbeeld archiefpagina views (bijv. archive.php), de homepage view (front-page.php), single-post pagina views (bijv. single.php) en single-page pagina views (bijv. page.php). Wil je in je thema specifieke inhoud of scripts laden op bepaalde views, dan kan je in je WordPress thema gebruik maken van ‘conditional tags‘. Dit zijn in feite kleine functies waarmee je kan bepalen welke inhoud je op welke view weergeeft. Heb je al eens met conditional tags gewerkt, dan ben je ongetwijfeld de tags is_page(), is_single() en is_singular() tegen gekomen. Deze tags hebben een vergelijkbare werking, maar verschillen wel degelijk van elkaar. In deze post leg ik de verschillen en de werking uit van deze tags.

is_page()

De conditional tag is_page() is van de drie tags de eenvoudigste om te begrijpen. Wanneer je deze gebruikt geeft deze de waarde true of false (boolean) terug indien er een pagina (de post type ‘page’) wordt weergegeven. In deze conditional tag kan je de parameters pagina ID, paginatitel, of slug gebruiken als parameters. Bijvoorbeeld:

/**
 * Check if the page 'Contact' is being displayed
 */
if( is_page( 'Contact' ) {
	echo __( 'This is the contact page!', 'textdomain' );
}

Deze if-statement controleert of de pagina met titel Contact wordt weergegeven. Je kan ook gebruik maken van een array om meerdere parameters (in dit geval paginatitels) toe te voegen:

/**
 * Check if the page 'Contact' or 'About us' is being displayed
 */
if( is_page( array( 'Contact', 'About us' ) ) {
	echo __( 'I will be displayed on the Contact and About us pages!', 'textdomain' );
}

is_single()

De conditional tag is_single() geeft de waarde true of false (boolean) terug wanneer een single post pagina wordt weergegeven, behalve op de post types pagina (page) en mediabijlage (attachment).

Om inhoud te tonen op alle single post pagina’s gebruik je het volgende if-statement:

/**
 * Target all single post pages of all post types
 */
if ( is_single() ) {
	echo __( 'Hello world!', 'textdomain' );
}

Wil je inhoud toevoegen op enkel de single post pagina’s van bijvoorbeeld de post type portfolio, doe dat dan op de volgende manier:

/**
 * Target all single post pages of the post type 'portfolio'
 */
if ( is_single() && 'portfolio' == get_post_type() ) {
	echo __( 'This is a portfolio item', 'textdomain' );
}

Deze if-statement checkt eerst of de single-post view wordt weergegeven, en vervolgens wordt gecheckt of de single post view gelijk is aan die van het post type portfolio.

Wil je inhoud toevoegen op alle single post pagina’s behalve de single post pagina’s van de post type portfolio, verander dan het dubbele ‘is’ teken (==), wat betekent “is gelijk aan”, door een uitroepteken en ‘is’ teken (!=), wat betekent “is niet gelijk aan”:

/**
 * Target all single post pages except the post type 'portfolio'
 */
if ( is_single() && 'portfolio' != get_post_type() ) {
	echo __( 'This is not a portfolio item', 'textdomain' );
}

is_singular()

De conditional tag is_singular() geeft true of false (boolean) terug op alle single post pagina’s, dus ook van de post types pagina en (media)bijlage. Het is in feite dus een soort combinatie van de tags is_single() en is_singular(), en staat gelijk voor is_page || is_attachment || is_single.

Dus in plaats van:

if ( is_single() || is_page() || is_attachment() ) {
	echo __( 'Hello world!', 'textdomain' );
}

Kan je dus is_singular() gebruiken:

if ( is_singular() ) {
	echo __( 'Hello world!', 'textdomain' );
}

Het verschil tussen is_page(), is_single() en is_singular()

In het kot nog even de verschillen tussen is_page(), is_single() en is_singular() op een rijtje:

  • is_page() is true wanneer een single post van het post type pagina wordt weergegeven.
  • is_single() is true wanneer een single post van alle post types behalve pagina (page) of mediabijlage (attachment) wordt weergegeven.
  • is_singular() is true waneer een single post van alle post types (bijv. een custom post type) wordt weergegeven. Dus is zowel is_page() als is_single() true, dan is is_singular() altijd true.

Beoordeel deze post:

Gemiddeld: 0 / 5. Aantal beoordelingen: 0

Nog geen beoordelingen

Whoops! 😔

Zou je ons willen laten weten hoe we (deze post) kunnen verbeteren?