Descubre cómo conseguir que las entradas del bloque de lista nativo de WordPress solo se muestren a usuarios con una suscripción activa de Restrict Content Pro.
Restrict Content Pro es un plugin muy práctico y versátil para restringir contenido individual de cualquier tipo de entrada.
Pero una de las limitaciones es que las listas de entradas, como una página de archivo de un CTP, son visibles para todos lo usuarios.
Es decir, aunque el suscriptor no tenga acceso a la «Entrada X», esta se mostrará en la página de archivos. Eso sí, cuando haga clic en la misma le aparecerá el mensaje avisando que no tiene acceso.
Pero una opción más amigable para el usuario sería ocultarle los contenidos a los que no tiene acceso y evitarle así la frustración.
Para dar solución a esta limitación creé un par de tutoriales:
- Mostrar solo las entradas a las que tiene acceso el suscriptor de Restrict Content Pro
- Mostrar solo las entradas de una determinada categoría a las que tiene acceso el suscriptor de Restrict Content Pro
Son opciones interesantes pero no te permiten diseñar la lista de entradas desde la interfaz de usuario del editor.
Eso se resuelve con bloque nativo de WordPress que permite mostrar una lista de entradas (query loop). De hecho, en este tutorial repaso todas las opciones que ofrece en su interfaz de usuario.
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.
En el tutorial de hoy vas a ver cómo combinando los filtros query_loop_block_query_vars
y pre_render_block
con la función rcp_user_has_active_membership
vas a poder mostrar las entradas únicamente a los usuarios que tengan una suscripción activa.
Vamos a ver cómo:
Pasos para restringir la visualización del bloque de lista de contenido a usuarios que no tienen una suscripción de RCP activa
1. Crea y personaliza el bloque de lista de contenido
En primer lugar, añade un bloque de lista de contenido y configura los ajustes a tu gusto para que muestre las entradas que deseas.
Si aún no estás familiarizado con la interfaz te recomiendo que eches un ojo al tutorial donde explico todas las opciones que permite el bloque de lista de contenido.
2. Añade una clase CSS personalizada
Una vez que hayas creado el bloque, ve al apartado de «Avanzado» y añade restringido
en «Clase(s) CSS adicional(es)» del bloque «Plantilla de entrada».


3. Modifica la consulta del bloque de lista de entradas
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 1921 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.
Los condicionales que usas son:
- !
rcp_user_has_active_membership
: el usuario no tiene una suscripción activa (ya que usas!
antes de la función). $parsed_block['attrs']['className'] === 'restringido'
: que la clase CSS del bloque searestringido
.
Es decir, si el usuario no tiene una suscripción activa y el bloque tiene la clase CSS restringido
no le mostrará ninguna entrada. En cambio, a los suscriptores activos les mostrará el listado completo, tal y como lo personalizaste.
En este caso, usas post__in
para indicar que no muestre ninguna entrada. Pero puedes acceder a cualquier parámetro de WP_Query
, así que puedes usar la estrategia que quieras.
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 puedes usar el bloque de lista de contenido nativo de WordPress para que muestre las entradas que quieras con el diseño personalizado y que solo se puedan verlas los usuarios que tienen una suscripción activa de Restrict Content Pro.
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. 😉