Comprobar si un post tiene asignado un término de una taxonomía en WordPress

Puede ser que en un momento dado necesitemos saber si un post, del tipo que sea, tiene o no asignado un término de una taxonomía en concreto.

Antes de nada, vamos a sentar las bases para saber de lo que estamos hablando y lo que vamos a hacer, ok?

Os pongo el siguiente ejemplo:

Tenemos un Custom Post Type «Hook» que usamos, como ya habréis adivinado, para crear información de hooks de WooCommerce, cada hook en un post.

Este CPT «hook», tiene una taxonomía a la que llamaremos «tipo» en la que recogeremos el tipo de hook si es «Action» o es «Filter».

Ahora bien, en nuestro fichero de archivo de el cpt «hook», necesitamos saber si cada uno de los hooks (posts del cpt hook) es «action» o «filter » y para eso podemos usar la siguiente función:

has_term( string|int|array $term = '', string $taxonomy = '', int|WP_Post $post = null )

Podéis encontrar más información sobre esta función en: https://developer.wordpress.org/reference/functions/has_term/

Ahora bien, como en nuetro fichero de archivo de hook tenemos todo este tinglado montado en un loop que recorre todos los posts de tipo hook para ir pintándolos en el front, ahí es donde vamos a meter esta función para comprobar si el post es un action o es un filter.

Pero antes, tenemos que saber que el motivo por que el cual queremos saber si es un «action» o un «filter» es para añadirle una clase css en cada caso porque queremos pintar de manera diferente los actions y los filters.

Por consiguiente nuestro código quedaría algo así:

Recordemos que este código está dentro de un loop en el que vamos recorriendo todos los posts del cpt «hook».

Ahora, vemos un poco por encima la función que hemos usado y cómo la hemos usado.

has_term( 'action', 'hook-type' );

Como podemos ver, en nuestro caso hemos incluído como primer parámetro ‘action’ que es el slug del término de taxomía que queremos comprobar y como segundo parámetro hemos añadido el slug de la taxonomía ‘hook-type’.

De esta forma comprobamos si el post actual tiene asignado el término ‘action’ y si es así, establecemos un valor a la variable que vamos a usar para guardar el nombre de la clase css.

Espero que me haya explicado bien pero de todas formas, cualquier duda que tengáis sobre esto, me lo podéis comentar cuando queráis e intentaré ayudaros en todo lo que pueda.

Saludos a tod@s!