Descubre cómo personalizar las entradas que se muestran en un bloque de listado de contenido concreto gracias a los filtros de WordPress.
El bloque nativo de WordPress que permite mostrar un listado de entradas (query block) es uno de lo más potentes.
De hecho, en este tutorial repaso todas las opciones que ofrece en su interfaz de usuario. Aunque son bastantes, no llega al grado de personalización que podemos llegar modificando los parámetros de WP_Query
.
Sin embargo, la versión de WordPress 6.1 introduce un filtro de PHP que permite interaccionar directamente con la consulta (query), con lo cual las posibilidades se amplían casi hasta el infinito.
Sin embargo, esta estrategia tenía la limitación de que podías usar etiquetas condicionales para modificar la consulta de un bloque, pero no sirve en caso de que uses más de un bloque por página.
En el tutorial de hoy vas a ver cómo puedes conseguir modificar la consulta de un bloque de forma individual gracias a que vamos a combinar los filtros query_loop_block_query_vars
y pre_render_block
.
Vamos a ver cómo:
Pasos para personalizar la consulta de un bloque de listado de contenido concreto
En primer lugar, añade un bloque de listado de contenido y configura los ajustes a tu gusto.
1. Examina el ID del bloque
Una vez que hayas creado el bloque, ve al modo «editor de código» y examina el HTML.

Pro tip: utiliza el atajo de teclado Cmd + Alt + Shift + M
para ir más rápido.

A la altura de donde has creado el bloque verás algo similar a:
<!-- wp:query {"queryId":8,"query":{"perPage":3,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"","inherit":false}} -->
La parte que te interesa es la de queryId
ya que todos los bloques de contenido tienen un identificador numérico. En este caso es 8.
2. Modifica la consulta del bloque elegido
A continuación añade el siguiente snippet al fichero functions.php o a tu plugin de funcionalidades:
Para ver este código y los otros 1953 snippets de esta web,
identifícate o suscríbete aquí.
En este código utilizas el filtro pre_render_block
, que te permite acceder a los atributos de todos los bloques, junto con query_loop_block_query_vars
en el cual modificas la consulta para pedir que excluya las entradas con la categoría con IDs 10 y 15 en el bloque que tiene el identificador 8.
Puedes obtener el ID de la categoría revisando la URL cuando editas la misma o, si quieres ponértelo más fácil, conseguir que se muestre directamente en el admin de WordPress con este tutorial.
Pero esto es solo un ejemplo, puedes hacer cualquier modificación en la consulta que te permita la clase WP_Query
. Por ejemplo:
- Ordenar por lo que quieras (metadatos, random…)
- Elegir qué entradas se muestran
- Excluir categoría(s)/etiqueta(s)
- Mostrar varios CPTs
- …
Por ejemplo, este sería el código que usarías si quieres que la modificación de la consulta muestre la combinación de varios CPTs:
Para ver este código y los otros 1953 snippets de esta web,
identifícate o suscríbete aquí.
Ya ves que tener un filtro con acceso a la query te da una flexibilidad extra a lo que ofrece la interfaz de usuario. Y este es solo un ejemplo de lo que puedes conseguir.
Puedes acceder a cualquier parámetro de WP_Query
, así que las posibilidades son tremendas.
Eso sí, ten en cuenta que al estar usando un filtro de PHP tienes la limitación de que el resultado solo lo verás en la parte frontal de la web, en el backend no se reflejarán los cambios.
Conclusiones
Ya ves que combinando los dos filtros puedes personalizar la consulta de un bloque de listado nativo de WordPress concreto para que muestre las entradas que quieras.
Si tienes alguna duda te leo en los comentarios. Y si quieres dejarme una sugerencia para futuros tutoriales, envíamela a través del formulario de contacto.
Todo ventajas de ser suscriptor. 😉