Mostrar los posts de una categoria

En un post anterior hablé sobre WP_query y uno de los parámetros que acepta, en este caso posts_per_page, que es usado para

mostrar todos los posts en una página

de WordPress.

En este post explico cómo

mostrar los posts de una categoria

WordPress modificando otro parámetro de la consulta de WordPress a base de datos.

En la ilustración destacada de este post he querido recoger alguno de los ejemplos que nos da el Codex de WordPress en su página sobre WP_Query, que puedes ver aquí.

Mostrar los posts de una categoria por su ID

Para ello se utiliza el parámetro ‘cat’, al que añadimos el ID o los ID de la categoría o categorías de las que queremos obtener sus posts. Para saber si obtendremos todos o no, te recomiendo leer el post que te indiqué anteriormente.

¿Cómo obtener el ID de la categoría?

Esto es sencillo de hacer desde el administrador de WordPress.

Accede a la categoría cuyos posts deseas mostrar a través de Entradas > Categorías y después entrando en la categoría en cuestión.

En la URL podrás ver el número que necesitas poner en el parámetro de la consulta.

Ver el ID de una categoria en WordPress

En mi caso sería el número 26 el que debería usar, quedando mi query como:

$query = new WP_Query( 'cat=26' );

Mostrar los posts de una categoria por su slug

No solo podemos especificar el id de una categoría, si no que también se pueden mostrar los posts de una categoria buscando por su slug

¿Cómo obtener el slug de una categoría?

Desde la misma pantalla de administración indicada anteriormente (Entradas > Categorías, y entrando en aquella que queremos obtener), existe una opción dentro de la página que se visualiza, que es el slug de la categoría.

En mi caso, cómo no, tengo una categoría con slug WordPress, por lo tanto la siguiente query: $query = new WP_Query( 'category_name=wordpress' ); me daría todos los posts de la categoría WordPress.

Si no quieres mostrar los posts de una categoria, sino de varias, basta con separar los slugs por comas, es decir, que para obtener los posts de la categoría wordpress y de la categoría php, basta con ejecutar la query:

$query = new WP_Query( 'category_name=wordpress,php' );

Modo avanzado

Una consulta más avanzada sería la de mostrar posts que tengan más de una categoría, es decir, dame los posts que sean para usuarios y a la vez sean de WordPress. Esto difiere de lo visto anteriormente en que los posts deben pertenecer a ambas categorías, no vale con que pertenezcan a cualquiera de ellas.

¿Cómo mostrar posts que tengan más de una categoría?

Basta con usar una query como la siguiente:

$query = new WP_Query( 'category_name=wordpress+para-usuarios' );

¿Cómo excluir los posts de una categoría?

Por último vamos a aprender a impedir que se muestren los posts de una determinada categoría.

Para ello basta con modificar levemente la query usada para mostrar los posts de una categoría por su ID, y utilizar el símbolo ‘-‘ de la siguiente manera:

$query = new WP_Query( 'cat=-26' );