Las etiquetas condicionales de WordPress son una gran característica de WordPress que le permite controlar qué contenido se muestra en una página. Hay etiquetas condicionales para diferentes áreas de su sitio web, como su página de inicio, entradas de blog y páginas. Esto le permite cambiar lo que se muestra en su sitio web. Por ejemplo, puede cambiar el logotipo de su sitio web en diferentes áreas de su sitio web.
En este tutorial, voy a explicar lo que las etiquetas condicionales están disponibles para usted y le mostrará cómo se pueden utilizar en temas y plugins.
Cómo funcionan las etiquetas condicionales de WordPress
Las etiquetas condicionales son un tipo de dato booleano que sólo 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 hacemos a continuación es comprobar si la página que se muestra es la página í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 utilizando etiquetas condicionales, sin embargo eso es esencialmente todo lo que hay que hacer. 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 parte del código.
Antes de ver más ejemplos de cómo las etiquetas condicionales pueden ser usadas, veamos primero las etiquetas condicionales más populares que probablemente verá usadas en sus temas de WordPress.
- is_home() – Comprueba si se está mostrando el índice de entradas del blog. Esta puede o no ser su página de inicio.
- is_front_page () – Comprueba si se muestra su página de inicio. Esto funciona tanto si la configuración de la página de inicio está configurada para mostrar las entradas del blog (es decir, el índice del blog) o 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 muestra un adjunto.
- is_page () – Comprueba si se está mostrando una página.
- is_singular() – Comprueba si se está mostrando una entrada, un adjunto o una página. Se devuelve True 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 un archivo de etiquetas.
- is_author() – Comprueba si se está mostrando una página de archivo de autor.
- is_archive() – Comprueba si se está mostrando cualquier 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 pegajosa.
- is_multi_author() – Comprueba si más de un autor ha publicado entradas en el sitio web. Se devuelve True si dos o más personas han publicado entradas. Si sólo un autor ha publicado mensajes, o si no se ha publicado ningún mensaje, se devuelve false.
Hay seis etiquetas condicionales basadas en el tiempo que también le resultarán útiles. Estas etiquetas se refieren a páginas de archivo de fechas. Por ejemplo, la URL http://www.yourwebsite.com/2013/12/ es una página de archivo basada en meses.
Si cualquiera de las siguientes etiquetas condicionales devuelve true, is_archive() también será true.
- is_date () – Comprueba si se trata de una página de archivo basada en una fecha.
- is_year () – Comprueba si se trata de una página de archivo basada en un año.
- is_month () – Comprueba si se trata de una página de archivo basada en un mes.
- is_day () – Comprueba si se trata de una página de archivo basada en días.
- is_time () – Comprueba si se trata de una página de archivo basada en la hora.
- is_new_day () – Comprueba si hoy es un nuevo día. Si la entrada actual se publicó en un día distinto al de la entrada anterior, devolverá true. Se devolverá false si ambos posts se publicaron el mismo día.
Se encontrará con etiquetas condicionales como is_home() y is_single() frecuentemente, sin embargo no necesita recordar todas estas etiquetas condicionales. La mayoría de los usuarios de WordPress consultan el codex de WordPress para encontrar 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 le da mucho más control sobre las condiciones que deben cumplirse antes de que algo se ejecute. is_page() es un buen ejemplo de esto. La etiqueta le permite comprobar si la página que se está mostrando es una página. is_page() devolverá un valor de true si se muestra cualquier página, sin embargo necesita especificar el parámetro $page si quiere 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 desea personalizar la página acerca de manera diferente de todas las demás páginas. Por ejemplo, podría mostrar una fotografía de su empresa en la parte superior de la barra lateral, o podría mostrar información adicional en la parte inferior de la página acerca de.
Para ello, debe definir el parámetro $page. Si el ID de la página fuera 10, podría abrir su declaración condicional con algo como esto:
if ( is_page(10) ) {
También se puede especificar una página concreta pasando el título de la página a la función.
if ( is_page( 'About Us' ) ) {
También se puede utilizar el slug de la página. Como recordará, el slug de página es el identificador único con nombre que aparece al final de la URL. Si la URL de su página sobre www.yourwebsite.com/about-our-company/, el slug de la página sería sobre-nuestra-empresa.
if ( is_page( 'about-our-company' ) ) {
Algunas etiquetas condicionales, como is_page(), también pueden pasar parámetros en una matriz. La siguiente sentencia condicional devolverá el valor true si alguna de las condiciones es verdadera.
if ( is_page( array( 10, 'About Us', 'about-our-company' ) ) ) {
Es habitual que los desarrolladores establezcan más de una condición cuando utilizan etiquetas condicionales. Volvamos a la sencilla tarea de mostrar un mensaje de bienvenida a los visitantes de un blog. Esto es algo que un sitio web corporativo podría querer añadir 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.).
Para ello, puede utilizar las etiquetas condicionales is_home() e is_single(), que representan el índice del blog y las entradas individuales, respectivamente. Para mostrar un mensaje en ambas áreas, es necesario utilizar el operador lógico OR ||. Esto se ilustra en el siguiente código. La sentencia if inicial comprueba si la página es el índice del blog o una entrada individual. Si cualquiera de los dos es verdadero, se muestra el mensaje.
<?php if ( is_home() || is_single() ) { echo "Welcome to Our Blog!!"; } ?>
Otro operador lógico muy útil es el operador AND &&. Se utiliza cuando se desea que dos o más condiciones sean verdaderas antes de que algo se ejecute. La siguiente sentencia if comprueba si una página es a la vez una página de archivo y está categorizada en la categoría de noticias. En las páginas de la categoría de noticias, se mostrará el mensaje de bienvenida. En otras categorías no se mostrará nada.
<?php if ( is_archive() && is_category( 'News' ) ) { echo "Welcome to the News Archives"; } ?>
Los operadores AND y OR pueden combinarse. El ejemplo de abajo está tomado de la plantilla functions.php del tema por defecto de WordPress Twenty Thirteen. La función se utiliza para mostrar el título de la página en el navegador, sin embargo, sólo una parte de la función se muestra a continuación.
La sentencia if devuelve un valor de true 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 introducir a través del campo de lema en su área de configuración general. Si completa este campo, en el índice de su blog y en la página de inicio la barra de título mostrará “Título del sitio | Descripción del sitio” (nota: el separador se muestra utilizando la cadena $sep en el código siguiente). Si no lo hace, la barra de título mostrará “Título del sitio”.
Como puede ver, is_home y _is_front_page se ven como una sola entidad debido al operador OR. Por eso están entre paréntesis.
if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description";
Otro operador lógico de PHP que puede usar es el operador not !. Este es más práctico de usar en muchas circunstancias. Por ejemplo, digamos que quiere mostrar una fotografía en todas sus páginas excepto en sus archivos. No hay necesidad de configurar una larga sentencia condicional que pregunte “¿Es esta la página de inicio, es este un único post, es esta una página…”. Es más práctico preguntar simplemente “¿No es ésta una página de archivo?”.
Para ello, basta con añadir un signo de exclamación antes de la etiqueta condicional. El siguiente código muestra lo sencillo que es esto en la práctica. Mostrará una imagen en todas las páginas de su 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 que se utilizan cuando algo se hace o no se hace (es decir, si A es verdadero, haz B). En la práctica, suele haber otra acción que realizar si no se cumple una condición. Además, 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 utilizar sentencias else y elseif. Esto le permite un mayor grado de control sobre lo que se muestra en su sitio web.
Podemos mostrarlo con un ejemplo. Supongamos que desea mostrar un logotipo diferente en diferentes áreas de su sitio web. ¿Cómo lo haría? La respuesta es sencilla: Usamos las sentencias else y elseif. El siguiente código 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 esté viendo el visitante, se mostrará uno de los cinco logotipos que aparecen en el código anterior. Se trata de un ejemplo básico que ilustra la facilidad con la que se pueden utilizar las sentencias else y elseif para controlar muchas áreas diferentes de su sitio web.
Las sentencias else también se utilizan en otras partes de WordPress. La mayoría de las plantillas functions.php las usan y muchos temas de WordPress las usan 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 ellas son utilizadas por desarrolladores en temas y plugins.
A continuación se muestra una lista de algunas de las otras etiquetas condicionales que están disponibles para usted.
- is_tax () – Comprueba si se muestra 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 el nombre de la taxonomía existe.
- 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 muestra 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 se permiten comentarios para la entrada o página actual.
- pings_open () – Comprueba si se permiten pings 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á viendo es una página paginada distinta de la página uno. Las entradas y páginas están paginadas cuando se usa la etiqueta rápida nextpage en el contenido para dividir entradas grandes.
- is_trackback () – Comprueba si se está utilizando un trackback.
- is_admin() – Comprueba si el usuario ha iniciado sesión en el área de administrador. No se usa para comprobar si un usuario tiene privilegios de administrador, sólo si ha iniciado sesión en el panel de control de WordPress.
- is_page_template() – Comprueba si la página que se está viendo utiliza una plantilla de página. Se puede definir una plantilla de página específica, si es necesario.
- is_preview () – Comprueba si una entrada del blog se está viendo en modo borrador.
- has_excerpt() – Comprueba si la entrada actual tiene un extracto. Se pueden definir entradas específicas.
- has_nav_menu() – Comprueba si una ubicación de menú tiene un menú asignado. Esto es utilizado por los desarrolladores de temas para mostrar algo en el caso de que el usuario no haya añadido un menú.
- in_the_loop() – Comprueba si el invocador está aún dentro del bucle de WordPress.
- is_active_sidebar( $index ) – Comprueba si se está usando una barra lateral determinada.
- is_multisite () – Comprueba si el multisitio está soportado.
- 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á usando un tema hijo.
- current_theme_supports( $característica ) – Comprueba si un tema soporta una característica específica como formatos de entrada o imágenes destacadas.
Compruebe también: Cómo eliminar taxonomías por defecto.
Las etiquetas condicionales son un concepto importante de WordPress. Debido a lo útiles que son, hay pocos temas de WordPress que estén diseñados sin ellas. Una vez que entiendas las sentencias else, elseif y los operadores lógicos como AND, OR y Not; serás capaz de abordar cualquier función condicional.
Espero que esta guía te haya ayudado a aprender cómo usar las etiquetas condicionales de WordPress en tus temas.
Si te ha gustado este artículo, únete a IsItWP en Twitter.
hi, im hetting a problem in executing the conditional statement…
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’ );
}
Are you getting an error message?
Except that teaching: { ?> with the brace located inside the php closing tag is improper syntax. Refer to WP or PHP code tuts.
This is a really nice tutorial. It helped me a lot in creating my child theme.
Hey Martin, glad it helped. Do follow us on Facebook and Twitter for more tutorials. 🙂
Nice tips. Understanding how to use conditional tags is a key requisite to WordPress developers. 🙂
Thanks for this have got to do some work on a client’s website so a link only appears in a certain shop category so this will come in handy thank you.