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 Easy Digital Downloads.
Si tienes una membresía creada con Easy Digital Downloads (más los addon de Recurring Payments y Content Restriction) sabrás que es bastante sencillo 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.
Ahora mismo la forma más sencilla de mostrar un listado de entradas es con el bloque nativo de WordPress (query loop). De hecho, en este tutorial repaso todas las opciones que ofrece en su interfaz de usuario.
Gracias a que la versión de WordPress 6.1 introdujo un filtro de PHP que permite interaccionar directamente con la consulta (query), puedes modificar la misma programáticamente.
En el tutorial de hoy vas a ver cómo combinando los filtros query_loop_block_query_vars
y render_block
y accediendo a la clase EDD_Recurring_Subscriber
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 EDD 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 2063 snippets de esta web,
identifícate o suscríbete aquí.
En este código utilizas el filtro 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:
!$active_subscriber
: el usuario no tiene una suscripción activa (ya que usas!
antes de la variable). La variable la obtienes usando la claseEDD_Recurring_Subscriber
.$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 solopuedan verlas los usuarios que tienen una suscripción activa de Easy Digital Downloads.
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. 😉