Cómo usar etiquetas condicionales en WordPress
Publicado: 2020-06-09Una de las cosas que más me gustan de WordPress es que incluye un montón de funciones que simplifican mucho nuestro trabajo como desarrolladores. Por ejemplo, considere funciones como esc_attr , que escapa el texto para que pueda agregarse de manera segura en un atributo de etiqueta HTML, o esc_html , que escapa el texto para que pueda incluirse de manera segura en una página HTML. O echa un vistazo a algunas de las funciones que tenemos para desinfectar los datos que recibimos de un usuario: sanitize_text_field , sanitize_textarea_field o sanitize_email . ¡Te acostumbras tanto a estas funciones bien definidas que realmente las extrañas cuando tienes que desarrollar algo fuera del ámbito de WordPress y descubres que ya no están disponibles!
La colección de funciones que tenemos a nuestra disposición cuando desarrollamos en WordPress es increíblemente grande. Y cuanto más familiarizados estemos con ellos, más fácil será escribir código de alta calidad.
Hoy me gustaría hablarles sobre las etiquetas condicionales en WordPress: qué son, cómo usarlas, qué pueden confundir y por qué son tan útiles. Si eres desarrollador de plugins o temas y aún no los conoces, no te pierdas este post.
¿Qué son las etiquetas condicionales de WordPress?
Las etiquetas condicionales son funciones definidas en WordPress cuyo resultado es un valor booleano (es decir, es true o false ). Estas son funciones que podemos usar tanto en nuestros complementos como en temas para tomar decisiones condicionales basadas en el contenido que estamos a punto de representar.
Lo que hace que las etiquetas condicionales sean geniales es que, en general, sus nombres se explican por sí mismos y dan como resultado un código que es muy fácil de entender. Por ejemplo, si usa la etiqueta condicional is_sticky en su complemento, claramente devolverá true si, dentro del bucle de WordPress, estamos procesando una publicación fija . No hay duda sobre su semántica, ¿verdad?
Antes de comenzar con algunos ejemplos, tenga en cuenta que las etiquetas condicionales solo están disponibles una vez que WordPress ha determinado qué contenido ha solicitado el visitante. Si intentamos usarlos antes, su resultado siempre será false . En otras palabras, solo podemos usarlos una vez que se haya ejecutado la acción posts_selection .
Etiquetas condicionales más comunes
La mayoría de las etiquetas condicionales en WordPress comienzan con is_ , ya que la respuesta a una pregunta como "¿es bla, bla?" es un valor booleano: ya sea "sí" o "no". Pero, lamentablemente, no siempre se sigue este criterio (como veremos a continuación).
Hay muchas etiquetas condicionales dentro de WordPress con las que se familiarizará a medida que las necesite. Pero hay bastantes que son extremadamente comunes y cuanto antes los conozcas, mejor. Así que echemos un vistazo más de cerca a esos:
-
is_single. Comprueba si el elemento actual es una publicación de WordPress o una instancia de cualquier otro tipo de publicación personalizada (como, por ejemplo, un producto de WooCommerce). -
is_page. Comprueba si el elemento actual es una página de WordPress. -
is_attachment. Comprueba si el elemento actual es un archivo adjunto. Los archivos adjuntos son aquellos archivos que carga en su biblioteca multimedia, como imágenes, videos, archivos, etc. -
is_singular. Comprueba si alguna de las tres funciones anteriores estrue. Es decir, comprueba si el elemento actual es una publicación, una página, un archivo adjunto o cualquier otro tipo de publicación. -
comments_open. Devuelvetruesi los visitantes pueden comentar sobre el elemento actual. ¿Ver? Aquí tienes un ejemplo donde la etiqueta condicional no comienza conis_. -
is_category. Comprueba si actualmente estamos viendo una página de archivo de categoría. -
in_category. Devuelve verdadero si la publicación actual está en la categoría dada. -
is_tag. Comprueba si actualmente estamos viendo una página de archivo de etiquetas. -
has_tag. Comprueba si la publicación actual está etiquetada con la etiqueta especificada. -
is_main_query. Comprueba si estamos en el bucle principal de WordPress.
¿Sabías que hay etiquetas condicionales que pueden ser engañosas?
Hay algunos casos donde las etiquetas condicionales tienen nombres que pueden llevarnos a confusión ya que lo que parecen evaluar y lo que realmente evalúan son cosas diferentes:
-
is_admin. Podría pensar que esta función verifica si el usuario actual es un administrador, ¿verdad? ¡Incorrecto! Comprueba si estamos en una página dentro del Dashboard de WordPress (y entonces su resultado seríatrue) o en el front-end (es decir,false). -
is_home. Solía pensar que esta función comprueba si la página actual es tu página de inicio. Por ejemplo, en nuestro sitio web, seríahttps://neliosoftware.com. Pero desafortunadamente, ese no es el caso. WordPress nació como una plataforma de blogs y creo que este es un ejemplo de un "código heredado".is_homees una función condicional que comprueba si la página actual es tu página de blog . Por lo tanto, por ejemplo, si está utilizando la configuración predeterminada de WordPress,is_homede hecho devuelvetruecuando un visitante está en la página de inicio (https://yourweb.com), porque esa página muestra las últimas publicaciones de su blog. Pero si configura la página de su blog en otra cosa (comohttps://yourweb.com/blog), entoncesis_homeserátruecuando el visitante solicitehttps://yourweb.com/blogyfalseen caso contrario. -
is_front_page. Y esta es la etiqueta condicional que le permitirá saber cuándo el visitante está en la "página de inicio". -
is_dynamic_sidebar. Esta función verifica si su tema tiene una o más barras laterales de widgets y, si las tiene, devolverátruesi al menos una de esas barras laterales no está vacía.
Parametrización de etiquetas condicionales
Aunque la mayoría de las etiquetas condicionales son funciones que se pueden llamar sin parámetros, muchas de ellas admiten parámetros. Si los usamos, podemos ser más específicos sobre los criterios que debe cumplir la publicación actual. Y lo hacen de una manera bastante lógica.

Dependiendo de la función específica que estemos usando, es posible que deseemos verificar si el elemento actual tiene una determinada ID o un determinado slug, si es una instancia de un determinado tipo de publicación o incluso si tiene un título específico. Por ejemplo:
-
is_singular( 'product' )comprueba si el elemento actual es un producto . -
is_page( 'Contact Us' )verifica si el título de la página actual es "Contáctenos". Esta función acepta diferentes tipos de argumentos y, dependiendo de lo que proporciones, comprobará una cosa u otra. Por ejemplo, puede verificar si el elemento actual tiene una identificación determinada o un título o slug determinado. Bastante ordenado, ¿eh? ¡Incluso puedes usar listas como parámetros! -
is_single( [ 5, 10, 11 ] )verifica si el ID del elemento actual es 5, 10 u 11. Es bastante similar ais_page, pero, como dijimos antes, funciona para publicaciones que no sean page.
Cómo usar etiquetas condicionales
Echemos un vistazo a un par de ejemplos en los que las etiquetas condicionales pueden resultar útiles.
Personalización de plantillas
Como probablemente hayas previsto, las etiquetas condicionales son obviamente útiles en los temas. Si quieres que el tema muestre una información u otra según el tipo de contenido que se esté visualizando en cada momento (y esto es algo que querremos hacer a menudo), las etiquetas condicionales son tus aliadas:
<?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...Esto le permite usar la misma plantilla para diferentes tipos de contenido y personalizar cada uno de ellos con etiquetas condicionales.
Activos en cola condicionalmente
Pero las etiquetas condicionales también son extremadamente útiles para los desarrolladores de complementos. Específicamente, nos ayudan a cargar partes de nuestro complemento de forma condicional, según los resultados que obtengamos de las etiquetas condicionales.
Por ejemplo, imagine que estamos desarrollando un complemento que agrega algún tipo de funcionalidad a las publicaciones de nuestro blog. Supongamos que esta funcionalidad requiere que pongamos en cola un script y una hoja de estilo en el front-end. Para poner en cola scripts y estilos en WordPress tenemos un filtro llamado wp_enqueue_scripts :
function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' ); El problema con el fragmento anterior es que siempre pone en cola nuestros activos, sin importar lo que solicite el visitante. Cada vez que se ejecuta wp_enqueue_scripts (y lo hace en cada solicitud de front-end), se llamará a nuestra función de devolución de llamada y se agregará nuestra secuencia de comandos y hoja de estilo. Pero dijimos que nuestra función solo afecta las publicaciones de blog, así que... ¿realmente necesitamos poner en cola estos recursos siempre? ¡Por supuesto que no! Y podemos mejorar esto usando la etiqueta condicional apropiada:
function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );En resumen
Las etiquetas condicionales de WordPress nos permiten probar diferentes criterios de nuestro contenido y así adaptar lo que sucederá en función de eso. A pesar de su extrema sencillez, son funciones muy útiles que hacen más inteligible y eficiente nuestro código.
Espero que hayas aprendido algo hoy y, como siempre, si tienes alguna pregunta o comentario, háznoslo saber en la sección de comentarios a continuación.
Imagen destacada de Justin Luebke en Unsplash.
