WordPress y sus etiquetas condicionales

En algunas ocasiones nos veremos programando funcionalidades que deben ser incluidas en las plantillas solo cuando se cumple una condición WordPress en particular. Por ejemplo: un fichero Javascript con controles para un formulario de contacto debe cargarse solamente cuando la página actual sea «Contacto». Para ello WordPress tiene una serie de etiquetas condicionales que podemos utilizar en nuestros temas o plugins. Veremos a continuación algunos ejemplos con su descripción y ejemplos de uso.

is_admin()

Esta función o etiqueta condicional será verdadera cuando estemos en cualquier sección del administrador de WordPress.  Ejemplo de uso:

<?php

function site_scripts() {
	// Encolar mifichero.js solo si estamos en el Frontend.
	if( !is_admin() ) {
		wp_enqueue_script('mificherojs', get_bloginfo('template_url') . '/js/mifichero.js',array(),false,true);
	}
}
add_action( 'wp_enqueue_scripts', 'site_scripts' );
?>

is_single()

Será verdadero cuando se muestre un post en particular (a excepción de attachments o page post type).

<?php

function site_scripts() {
	// Encolar mifichero.js solo si estamos mostrando un single específico
	if( is_single() ) { // Se ejecutará cuando la página actual sea cualquier Single
		wp_enqueue_script('mificherojs', get_bloginfo('template_url') . '/js/mifichero.js',array(),false,true);
	}
	
	// O también
	if (is_single('10')) {
		// Cuando el post 10 se esté mostrando con la plantilla Single
	}
	if (is_single('hola-mundo')) {
		// Cuando el post con slug 'hola-mundo' se esté mostrando con la plantilla Single
	}

	if (is_single( array('hola-mundo', '10') ) ) {
		// Cuando el post con slug 'hola-mundo' o ID '10' se esté mostrando con la plantilla Single
	}
}
add_action( 'wp_enqueue_scripts', 'site_scripts' );

?>

is_post_type_archive()

Este condicional puede sernos útil cuando tenemos uno o más Custom Post Type y mostramos el listado de posts con la plantilla genérica archive.php. Ejemplo: Si estoy mostrando el listado de posts del Custom Post Type «Coches» agregar una clase para modificar el color de fondo.

<?php
    
get_header();

if (have_posts()): ?>

    <ul>

    <?php

    while(have_posts()): the_post();
        /* 
         * Si el post actual es del Custom Post Type "Coche" agrego una clase para diferenciar
         * el color de fondo.
        */
        $claseFondoRojo = (is_post_type_archive('coche'))?'backred':'';
        
        // también pueden especificarse más de un Custom Post Type con un parámetro de array.
        $claseFondoRojo = (is_post_type_archive( array( 'coche', 'moto' ) ) )?'backred':'';
        
        ?>

        <li class="<?php echo $claseFondoRojo; ?>"><?php the_title(); ?></li>

    <?php endwhile; ?>

    </ul>

<?php

endif;

get_footer();

is_page()

Al igual que el condicional anterior podremos usar esta función para aplicar un código en alguna página en particular cuando utilicemos la plantilla genérica page.php o bien para agregar funcionalidad desde nuestro functions.php.

<?php

function site_scripts() {
	// Encolar mifichero.js solo si estamos mostrando una página
	if( is_page() ) { // Se ejecutará cuando el frontend muestre cualquier página
		wp_enqueue_script('mificherojs', get_bloginfo('template_url') . '/js/mifichero.js',array(),false,true);
	}

	// O también
	if (is_page(10)) {
		// Cuando se muestre la página con ID 10 
	}
	if (is_page('contacto')) {
		// Cuando se muestre la página con slug 'hola-mundo'
	}

	if (is_page( array('contacto', 'quienes-somos', 10) ) ) {
		// Cuando se muestre la página con slug 'contacto' o 'quienes-somos'
		// o su ID es igual a 10.
	}
}
add_action( 'wp_enqueue_scripts', 'site_scripts' );


?>

Conclusión

Como podrán observar el comportamiento de todas las etiquetas condicionales es similiar: una simple función que devuelve un valor true o false con los que podremos controlar el flujo del código de nuestros temas o plugins. Estos son solos algunos ejemplos de las muchas etiquetas condicionales que WordPress tiene en su Core. Podrán encontrar más información de todas ellas en el Codex de WordPress.


¿Qué te pareció el artículo?
No molaPobreMolaMuy bueno¡Excelente! (4 votos, promedio: 5,00 de 5)
Cargando…
Mauricio Gelves
Mauricio Gelves es Lic. en Informática y trabaja como Consultor Web Freelance con su marca personal MauGelves. Se especializó en WordPress para ofrecer soluciones personalizadas y rentables a medianas y largas empresas. Es Nómade Digital desde el año 2015, actividad que combina sus dos principales pasiones: la informática y los viajes, y refleja sus experiencias a través de sus hobbies audiovisuales en Instagram y YouTube.
10 Pasos para ser Freelance - eBook Gratuito

10 pasos para convertirte en Freelance

Descarga en forma totalmente gratuita mi eBook en donde explico los 10 pasos que he dado para convertirme en Freelance.

Ingresa tu email y recibe en tu bandeja de correo el enlace para descargarte el eBook.

(Te doy mi palabra que solo enviaré un email al mes con todas mis novedades)


3 thoughts on “WordPress y sus etiquetas condicionales”

  1. Muy buena aportación.
    Personalmente ya use algunos condicionales, pero nunca a un nivel «core».

    Por ejemplo en mi caso, va bien cargar el «css/js» del slider de la home, solo si es la home. Así se reduce el tiempo de carga de las otras paginas…
    Lo mismo con un formulario/grafica/petición que solo se use en una pagina.

    Son detalles que marcan la diferencia.

  2. Hola Mauricio, muchas gracias por el post, me ha sido de gran utilidad

    Aprovecho para preguntarte si no es molestia qué método/plugin usas para mostrar los snippets de código ya que se ve realmente bien

    gracias!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *