• Saltar a la navegación principal
  • Saltar al contenido principal
Código Genesis

Código Genesis

Tutoriales de WordPress y Genesis Framework

  • Empieza aquí
  • Cuenta
    • Suscripción
    • Perfil
    • Actualizar tarjeta
    • Favoritos
    • Salir
  • Suscribirse
  • Acceder

Mostrar entradas del bloque de lista de contenido solo a los suscriptores activos de Restrict Content Pro

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 1837 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 sea restringido.

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. 😉

Editor de bloques PHP Query Block Restrict Content Pro WordPress

Nahuai Badiola

Desarrollador web especializado en WordPress y Genesis Framework. CEO de Código Genesis y cofundador de OsomPress (temas y plugins para WordPress).

Para dejar dudas o preguntas sobre este código, puedes identificarte o suscribirte.

  • Empieza aquí
  • Sobre Código Genesis
  • Preguntas frecuentes
  • Contacto

Aviso legal · Política de privacidad · Política de cookies · Condiciones de contratación
Copyright © 2023 · Código Genesis

¿Has olvidado tu contraseña?