Condiciones if en plantillas WordPress

¿Para qué nos sirven las condiciones if en la plantilla de WordPress? Pues para elegir qué presentar o qué no, según la parte de la plantilla que sea visionada. Por ejemplo, para diferenciar si alguien se encuentra en una página de portada, una individual o una de categoría. Inclusive para entradas o categorías concretas, siendo esta última condición una herramienta muy puntual. De esta manera podemos añadir cualquier cosa que queramos a nuestra página y elegir si queremos que se vea por ejemplo sólo en una categoría o sólo en la portada.

De esta manera, la condición se aplica de esta forma en nuestra plantilla. Un ejemplo:

<?php if ( is_home() ) { ?>
(aquí va en medio el código que queramos insertar y que sólo se verá si se cumple la condición)
<?php } ?>

Por lo tanto, si nos encontramos en la página «home», que es la portada del blog, se mostrará lo que haya entre el código. Un ejemplo:

<?php if ( is_home() ) { ?>
<?php comments_template(); ?>
<?php } ?>

Como veis, he coloreado lo de «home» en lila, porque ese es el valor que deberéis cambiar para corresponderlo a otras partes del blog

home – Portada del blog
category – Categorías
single – Entrada individual
page – páginas estáticas
404 – página de error
date – si cumple esa fecha
time- si es esa hora
day – si es ese día
month – si es ese mes
year – si es ese año
archive – archivos
author – entradas escritas por ese autor
search – si es la página especial de búsqueda de la plantilla

Para completar más la especificación, podemos añadir entre los paréntesis, la entrada concreta en que queramos mostrar algo. Todas las entradas de un blog de WordPress tienen un número de ID.

<?php if ( is_single(17011) ) { ?>
(Lo que queramos mostrar si la gente visita la entrada 17011)
<?php } ?>

Si queréis saber la ID de una entrada, podéis averiguarlo si posicionáis el cursor del ratón en el nombre de la entrada (en el panel de WordPress, sección «Entradas > Editar»). En la barra de estado de la parte inferior de vuestro navegador veréis el número ID de esa entrada.

wordpress id entradas editar

O también mientras editáis una entrada, presionando el botón de «Obtener enlace corto», donde os aparecerá el número ID de la entrada.

wordpress id obtener enlace corto

Para adivinar las identidades de las categorías, igualmente entráis en la sección de «Categorías», colocáis el cursor del ratón sobre cualquier entrada, y en la barra de abajo de vuestro explorador os aparecerá el número de ID de dicha categoría. En la imagen de abajo muestro un ejemplo si buscáramos el número de la categoría «Imágenes y fotos», que es el 47.

wordpress id categorias editar

Y si como yo, estáis familiarizados con el Basic (XD), seguro que os sonarán las condiciones NOT y OR, que son para añadir reglas a la condición.

NOT hace que se cumpla esa condición si NO es esa parte de la plantilla. Para escribirlo, usamos un signo de exclamación ! y dos paréntesis adicionales (os marco en lila la diferencia). Ejemplo:

<?php if ( ! (is_category() ) ) { ?>
(Lo que queramos mostrar si NO estamos viendo una categoría)
<?php } ?>

Por el contrario, la partícula OR, lo que hace es añadir más partes adicionales si queremos que se cumpla la condición en varias partes de la plantilla. Para usar OR, escribimos dos barritas así ||. Os muestro abajo un ejemplo y os marco en lila la diferencia.

<?php if (is_category() || is_single() ) { ?>
(Lo que queramos mostrar si esa entrada es una categoría o una entrada individual del blog)
<?php } ?>

Y todas estas funciones, podemos mezclarlas para lograr condiciones de una gran exactitud. Abajo os pongo un ejemplo de algo que queramos mostrar siempre que NO sea la portada del blog o la entrada número 1022:

<?php if ( ! (is_home() || is_single(1022) ) ) { ?>
(Lo que haya aquí en medio se mostrará siempre que NO estemos en la portada o la entrada 1022)
<?php } ?>

ACTUALIZACIÓN:

Si queremos poner algo sólo en la página principal o portada y hemos utilizado <?php if ( is_home() ) { ?>, pero nos sigue saliendo el código en las páginas de paginación del blog (ejemplo: https://www.blogodisea.com/page/2), tenemos que incluir otra partícula para la paginación que se resuelve con la partícula PAGED y el condicional &&. Parece ser que las páginas de paginación, al ser servidas generalmente con el fichero index.php de las plantillas, el mismo que sirve la página principal, son interpretadas por el condicional como la portada también.

<?php if(is_home() && !is_paged()) { ?>
(aquí va en medio el código que queramos insertar y que sólo se verá en la página principal o portada, evitando que aparezca en las páginas de paginación)
<?php } ?>

Compartir este artículo

7 comentarios en «Condiciones if en plantillas WordPress»

  1. Me guardaré esta entrada como oro en paño. Recuerdo cuando vendía enlaces con exponsor y que tu me enseñaste todo esto.
    Divinamente que lo has explicado.

  2. Disculpa quiero una funcion para que cumpla una condicion de «AND» por ejemplo si categoria=1″AND»categoria=2 pero no encuentro nada sobre como hacerlo, te agradeceria me ayudaras uso wordpress 3.2.1

  3. Lo que pides creo que lo he puesto en el ejemplo

    (Lo que queramos mostrar si esa entrada es la categoría 1 o 2)

    Aunque yo no califico esa función como AND, sino como OR, ya que no se cumple por la suma de las dos condiciones. De hecho no tiene sentido declarar AND en WordPress, ya que no se puede estar en dos URL a la vez ¿no? Con una función OR bastaría para determinar una selección de URLs. También puede ser que no entendí lo que pides.

  4. Hola amigo, sabras como identificar una taxonomia. estoy intentando ocultar cierto texto de los posts que correspondan a una taxonomia. se puede?

  5. Hola alavar0, yo diría que es imposible por condiciones if, pero no estoy seguro porque si no veo un ejemplo, no te podría decir.

    Existe un plugin para WordPress llamado text obfuscator que quizás te podría servir para identificar un texto de un post y poder por ejemplo, presentar una cadena vacía de texto.

    Si me dices un ejemplo mejor, podría decirte algo, pero estoy un poco perdido de lo que necesitas.

    Saludos.

Responder a Jenny