Las etiquetas condicionales de WordPress son una gran característica de WordPress que te permite controlar qué contenido se muestra en una página. Hay etiquetas condicionales para diferentes áreas de tu sitio web, como tu página de inicio, publicaciones de blog y páginas. Esto te permite cambiar lo que se muestra en tu sitio web. Por ejemplo, podrías cambiar el logo de tu sitio web en diferentes áreas de tu sitio web.
En este tutorial, explicaré qué etiquetas condicionales tienes disponibles y te mostraré cómo se pueden usar en temas y plugins.
Cómo Funcionan las Etiquetas Condicionales de WordPress
Las etiquetas condicionales son un tipo de dato booleano que solo puede devolver verdadero o falso. La etiqueta is_home(), por ejemplo, se refiere al índice del blog. Podemos usar esta etiqueta para mostrar un mensaje a los visitantes de nuestro blog. Este mensaje no se mostrará en ningún otro lugar.
El código es sencillo. Todo lo que estamos haciendo a continuación es comprobar si la página que se muestra es la página del índice del blog. Si lo es, mostramos nuestro mensaje.
<?php
if ( is_home()) {
echo "Welcome to Our Blog!!";
}
?>
Lo anterior es un ejemplo básico de lo que se puede lograr usando etiquetas condicionales, sin embargo, eso es esencialmente todo lo que hay. Simplemente estás comprobando el tipo de página que se está mostrando. Dependiendo de si el resultado es verdadero o falso, se ejecuta otra pieza de código.
Antes de ver más ejemplos de cómo se pueden usar las etiquetas condicionales, primero veamos las etiquetas condicionales populares que probablemente verás usadas en tus temas de WordPress.
- is_home() – Comprueba si se está mostrando el índice de entradas del blog. Esta puede o no ser también tu página de inicio.
- is_front_page() – Comprueba si se está mostrando tu página de inicio. Esto funciona tanto si la configuración de tu página de inicio está configurada para mostrar entradas del blog (es decir, el índice del blog) como una página estática.
- is_single() – Comprueba si se está mostrando algún tipo de entrada individual (excluyendo archivos adjuntos).
- is_attachment() – Comprueba si se está mostrando un archivo adjunto.
- is_page() – Comprueba si se está mostrando una página.
- is_singular() – Comprueba si se está mostrando una entrada individual, un archivo adjunto o una página. Se devuelve verdadero si se cumple alguna de estas condiciones.
- is_category() – Comprueba si se está mostrando una página de archivo de categoría.
- is_search() – Comprueba si se está mostrando una página de resultados de búsqueda.
- is_tag() – Comprueba si se está mostrando una página de archivo de etiqueta.
- is_author() – Comprueba si se está mostrando una página de archivo de autor.
- is_archive() – Comprueba si se está mostrando algún tipo de página de archivo, incluyendo archivos de categoría, etiqueta, fecha y autor.
- is_sticky() – Comprueba si una entrada ha sido definida como destacada.
- is_multi_author() – Comprueba si más de un autor ha publicado entradas en el sitio web. Se devuelve verdadero si dos o más personas han publicado entradas. Si solo un autor ha publicado entradas, o si no se ha publicado ninguna entrada, se devuelve falso.
Hay seis etiquetas condicionales basadas en el tiempo que también te resultarán útiles. Estas etiquetas se refieren a páginas de archivo de fechas. Por ejemplo, la URL http://www.tusitio.com/2013/12/ es una página de archivo basada en el mes.
Si alguna de las siguientes etiquetas condicionales devuelve verdadero, is_archive() también sería verdadero.
- is_date() – Comprueba si es una página de archivo basada en fecha.
- is_year() – Comprueba si es una página de archivo basada en año.
- is_month() – Comprueba si es una página de archivo basada en mes.
- is_day() – Comprueba si es una página de archivo basada en día.
- is_time() – Comprueba si es una página de archivo basada en hora.
- is_new_day() – Comprueba si hoy es un nuevo día. Si la entrada actual se publicó en un día diferente al de la entrada anterior, devolverá verdadero. Se devolverá falso si ambas entradas se publicaron el mismo día.
Te encontrarás con etiquetas condicionales como is_home() e is_single() con frecuencia, sin embargo, no necesitas recordar todas estas etiquetas condicionales. La mayoría de los usuarios de WordPress consultan el codex de WordPress para obtener la etiqueta condicional apropiada cuando necesitan configurar una función condicional.
Ejemplos de etiquetas condicionales
Muchas etiquetas condicionales permiten pasar parámetros a la función. Esto te da mucho más control sobre qué condiciones deben cumplirse antes de que algo se ejecute. is_page() es un buen ejemplo de esto. La etiqueta te permite verificar si la página que se está mostrando es una página. is_page() devolverá un valor verdadero si se muestra alguna página, sin embargo, necesitas especificar el parámetro $page si quieres ser más específico. El parámetro $page puede ser el ID de la página, el título de la página o el slug de la página.
Consideremos un sitio web normal que tiene una página "acerca de" y quieres personalizar la página "acerca de" de manera diferente a todas las demás páginas. Por ejemplo, podrías mostrar una fotografía de tu empresa en la parte superior de la barra lateral, o podrías mostrar información adicional en la parte inferior de la página "acerca de".
Para hacer esto, necesitas definir el parámetro $page. Si el ID de la página fuera 10, podrías abrir tu declaración condicional con algo como esto:
if ( is_page(10) ) {
También se puede especificar una página específica pasando el título de la página a la función.
if ( is_page( 'About Us' ) ) {
El slug de la página también se puede usar. Como recordarás, el slug de la página es el identificador único con nombre al final de la URL. Si la URL de tu página "acerca de" fuera www.tusitio.com/acerca-de-nuestra-empresa/, el slug de la página sería acerca-de-nuestra-empresa.
if ( is_page( 'about-our-company' ) ) {
Algunas etiquetas condicionales, como is_page(), también pueden pasar parámetros en un arreglo. La siguiente declaración condicional devolverá un valor verdadero si alguna de las condiciones es verdadera.
if ( is_page( array( 10, 'About Us', 'about-our-company' ) ) ) {
Es común que los desarrolladores establezcan más de una condición al usar etiquetas condicionales. Volvamos a la tarea simple de mostrar un mensaje de bienvenida a los visitantes del blog. Esto es algo que un sitio web corporativo podría querer agregar a su área de blog, pero no a otras áreas de su sitio web (por ejemplo, página de inicio, página de contacto, página acerca de, etc.).
Pueden hacer esto usando las etiquetas condicionales is_home() y is_single(); que representan el índice del blog y las publicaciones individuales respectivamente. Para mostrar un mensaje en ambas áreas, necesitas usar el operador OR lógico ||. Esto se ilustra en el código a continuación. La declaración if inicial verifica si la página es el índice del blog o una publicación individual. Si alguna es verdadera, se muestra el mensaje.
<?php
if ( is_home() || is_single() ) {
echo "Welcome to Our Blog!!";
}
?>
Otro operador lógico que es muy útil es el operador AND &&. Este se usa cuando quieres que dos o más condiciones sean verdaderas antes de que algo se ejecute. La siguiente declaración if verifica si una página es tanto una página de archivo como si está categorizada bajo la categoría de noticias. En las páginas de la categoría de noticias, se mostrará el mensaje de bienvenida. No se mostrará nada en otras categorías.
<?php
if ( is_archive() && is_category( 'News' ) ) {
echo "Welcome to the News Archives";
}
?>
Los operadores AND y OR se pueden combinar. El siguiente ejemplo está tomado del archivo functions.php de la plantilla del tema predeterminado de WordPress, Twenty Thirteen. La función se utiliza para mostrar el título de la página en el navegador, sin embargo, solo se muestra parte de la función a continuación.
La declaración if devuelve un valor verdadero si hay una descripción del sitio y el usuario está viendo el índice del blog o la página de inicio. La descripción del sitio se puede ingresar a través del campo de lema en su área de configuración general. Si completa este campo, en su índice de blog y página de inicio, la barra de título mostrará “Título del sitio | Descripción del sitio” (nota: el separador se muestra usando la cadena $sep en el código a continuación). Si no lo hace, la barra de título mostrará “Título del sitio”.
Como puede ver, is_home y _is_front_page se consideran una sola entidad debido al operador OR. Es por eso que están envueltos entre paréntesis.
if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description";
Otro operador lógico de PHP que puedes usar es el operador not !. Este es más práctico de usar en muchas circunstancias. Por ejemplo, digamos que quieres mostrar una fotografía en todas tus páginas excepto en tus archivos. No hay necesidad de configurar una declaración condicional larga que pregunte “¿Es esta la página de inicio, es esta una publicación individual, es esta una página…?”. Es más práctico simplemente preguntar “¿No es esta una página de archivo?”.
Para hacer esto, simplemente agrega un signo de exclamación antes de la etiqueta condicional. El siguiente código muestra cuán directo es esto en la práctica. Mostrará una imagen en cada página de tu sitio web, excepto en las páginas de archivo.
<?php
if ( !is_archive() ) { ?>
<img src="photo.jpg" />
<?php
}
?>
Hasta ahora, hemos visto ejemplos básicos de etiquetas condicionales usadas donde algo se ejecuta o no se ejecuta (es decir, si A es verdadero, haz B). En la práctica, usualmente hay otra acción que hacer si una condición no se cumple. Adicionalmente, puede haber varias condiciones que se cumplan, con una respuesta diferente para cada una.
En lugar de escribir muchas sentencias individuales para esto, es práctico usar sentencias else y elseif. Esto te permite un mayor grado de control sobre lo que se muestra en tu sitio web.
Podemos mostrar esto usando un ejemplo. Digamos que quieres mostrar un logo diferente en tu sitio web en distintas áreas. ¿Cómo lo harías? La respuesta es simple: Usamos sentencias else y elseif. El código a continuación muestra cómo se puede lograr esto.
<?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
}
?>
Dependiendo del área del sitio web que un visitante esté viendo, uno de cinco logos se mostraría usando el código anterior. Es un ejemplo básico que ilustra cuán fácilmente se pueden usar las sentencias else y elseif para controlar muchas áreas diferentes de tu sitio web.
Las sentencias Elseif también se usan en otras partes de WordPress. La mayoría de las plantillas de functions.php las usan y muchos temas de WordPress las utilizan para cambiar cómo se muestra el título de su sitio web en los navegadores.
Más Etiquetas Condicionales
Hay una serie de etiquetas condicionales adicionales disponibles. Muchas de estas son utilizadas por desarrolladores en temas y plugins.
A continuación, se muestra una lista de algunas de las otras etiquetas condicionales que tienes disponibles.
- is_tax() – Comprueba si se está mostrando una página de archivo de taxonomía personalizada.
- has_term() – Comprueba si la entrada actual tiene uno de los términos especificados.
- taxonomy_exists() – Comprueba si existe el nombre de la taxonomía.
- post_type_exists() – Comprueba si existe un tipo de entrada.
- is_post_type_hierarchical( $post_type ) – Comprueba si el tipo de entrada es jerárquico.
- is_post_type_archive() – Comprueba si se está mostrando la página de archivo de un tipo de entrada específico.
- is_comments_popup() – Comprueba si la ventana emergente de comentarios está abierta.
- comments_open() – Comprueba si los comentarios están permitidos para la entrada o página actual.
- pings_open() – Comprueba si los pings están permitidos para la entrada o página actual.
- is_feed() – Comprueba si la consulta actual es para un feed.
- is_404() – Comprueba si se está mostrando un error 404.
- is_paged() – Comprueba si la página que estás viendo actualmente es una página paginada distinta de la página uno. Las publicaciones y páginas se paginan cuando usas la etiqueta rápida nextpage en tu contenido para dividir publicaciones grandes.
- is_trackback() – Comprueba si se está utilizando un trackback.
- is_admin() – Comprueba si el usuario ha iniciado sesión en el área de administración. No se utiliza para comprobar si un usuario tiene privilegios de administrador, solo si ha iniciado sesión en el panel de WordPress.
- is_page_template() – Comprueba si la página que se está viendo está utilizando una plantilla de página. Se puede definir una plantilla de página específica, si es necesario.
- is_preview() – Comprueba si una publicación de blog se está viendo en modo borrador.
- has_excerpt() – Comprueba si la publicación actual tiene un resumen. Se pueden definir publicaciones específicas.
- has_nav_menu() – Comprueba si una ubicación de menú tiene un menú asignado. Los desarrolladores de temas utilizan esto para mostrar algo en caso de que el usuario no haya agregado un menú.
- in_the_loop() – Comprueba si la llamada está todavía dentro del bucle de WordPress.
- is_active_sidebar( $index ) – Comprueba si se está utilizando una barra lateral determinada.
- is_multisite() – Comprueba si es compatible con multisitio.
- is_main_site() – Comprueba si un multisitio es el sitio principal de la red.
- is_super_admin() – Comprueba si un usuario es un superadministrador dentro de la red.
- is_plugin_active( $plugin ) – Comprueba si un plugin está activado.
- is_child_theme() – Comprueba si se está utilizando un tema hijo.
- current_theme_supports( $feature ) – Comprueba si un tema admite una característica específica, como formatos de publicación o imágenes destacadas.
También consulta: Cómo eliminar taxonomías predeterminadas.
Las etiquetas condicionales son un concepto importante de WordPress. Debido a lo útiles que son, hay pocos temas de WordPress que se diseñan sin ellas. Una vez que entiendas las sentencias else, elseif y los operadores lógicos como AND, OR y Not; podrás abordar cualquier función condicional.
Espero que esta guía te haya ayudado a aprender a usar las etiquetas condicionales de WordPress en tus temas.
Si te gustó este artículo, únete a IsItWP en Twitter.
hola, estoy teniendo un problema al ejecutar la declaración condicional…
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’ ); }////got this working elseif ( is_page() && is_page_template( ‘templates/custom-page.php’ ) ) { trav_get_template( ‘inner-p.php’, ‘/templates/inners’ );////but not getting this result…instead getting the below one for this condition aswell. } else { trav_get_template( ‘inner-1.php’, ‘/templates/inners’ ); }
¿Estás recibiendo un mensaje de error?
Excepto que enseñar: { ?> con la llave ubicada dentro de la etiqueta de cierre de php es una sintaxis incorrecta. Consulta los tutoriales de código de WP o PHP.
Este es un tutorial muy bueno. Me ayudó mucho a crear mi tema hijo.
Hola Martin, me alegra que haya sido útil. Síguenos en Facebook y Twitter para más tutoriales. :)
Buenos consejos. Entender cómo usar las etiquetas condicionales es un requisito clave para los desarrolladores de WordPress. :)
Gracias por esto, tengo que hacer un trabajo en el sitio web de un cliente, así que un enlace solo aparece en una categoría de tienda específica, así que esto será útil, gracias.