Obtener el contenido de cualquier post en WordPress

Cuando estamos desarrollando en WordPress, picando código en los diferentes ficheros php, ya sabemos que nos muestra el contenido de ese fichero como es el caso de los ficheros de archivo.

En el ejemplo que os presento queremos ya tenemos un fichero archive-hook.php donde tenemos implementado todo el código necesario para que muestre todos los posts del CPT «hook» en forma de listado como nosotros/as queremos pero, la casualidad es que también queremos mostrar algún tipo de contenido más estático en la parte superior de esa página, como si fuera el ancabezado de la página de archivo y después que muestre el listado que ya tenemos preparado en el código.

Dependiendo de cómo lo tengamos, es posible que al crear la página «hooks» en el panel de administración de WordPress, no nos muestre ese contenido y solo nos muestre lo que tenemos implementado en el fichero «archive-hook.php«.

Nota: He dicho crear la página «hooks» porque se trata de un CPT y tenemos reescrita el slug por «hooks«.

Bien, en estos casos vamos a tener que echar mano de una función de WordPress para coger el contenido de la página «hooks» y decirle por código que nos la muestre antes del listado de los hooks que tenemos implementado en el fichero «archive-hook.php«.

Esto que comento, podemos hacerlo usando la función: «get_post();«

A continuación podemos ver el formato y parámetros de esta función:

get_post( int|WP_Post|null $post = null, string $output = OBJECT, string $filter = 'raw' )

Tenéis más información sobre la función get_post() en el siguiente enlace: https://developer.wordpress.org/reference/functions/get_post/

Para el caso que nos ocupa, lo único que necesitamos es el ID del post (en este caso, página) que tiene el contenido que queremos mostrar por código antes del listado.

Por consiguiente, una forma de hacerlo sería la siguiente:

Con esto conseguimos mostrar el contenido de ese post que hemos creado en forma de página, entrada o de otro tipo en nuestro código.

Es una forma sencilla de tener el control de la parte estática a través del editor de WordPress y dejar la parte dinámica al código.

Espero que os sea de utilidad y cualquier duda o sugerencia, ya sabéis, dejadme un comentario o hacédmelo saber de cualquier otra forma.

Saludos a todos/as!

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!

Ir al contenido