Descubre en este tutorial cómo ocultar el contenido de cualquier bloque a usuarios que no hayan adquirido un producto de Easy Digital Downloads, mediante código.
Dependiendo de la web que tengas y tu estrategia, hay veces en las que te puede interesar mostrar contenido distinto dependiendo de si el usuario está logueado o no.
En el tutorial de hoy vas a ver cómo controlar que el contenido de un bloque solo se muestre a clientes que hayan comprado un determinado producto (o suscripción), combinando el filtro render_block
el condicional edd_has_user_purchased
.
Vamos a ver cómo:
Pasos para ocultar el contenido de un bloque a clientes que no hayan comprado un producto determinado
1. Elige el bloque que deseas ocultar
En primer lugar, elige el bloque cuyo contenido quieres que sea solo visible para los usuarios que se hayan identificado con su cuenta.
Si quieres que esto se aplique a más de un conjunto de bloques puedes elegir el bloque de grupo como contenedor.
2. Añade una clase CSS personalizada
Una vez que hayas creado el bloque, ve al apartado de «Avanzado» y añade ocultar-no-clientes
en «Clase(s) CSS adicional(es)» del bloque.
3. Modifica el acceso al contenido del bloque
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 2055 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 al condicional edd_has_user_purchased
.
En el mismo le indicas que si el usuario no ha comprado un producto de Easy Digital Downloads (en este caso el que tiene el identificador 55) y el bloque tiene la clase CSS ocultar-no-clientes
, no podrá ver el contenido del bloque. En cambio, si han comprado ese producto les mostrará el bloque completo, tal y como lo creaste.
Si quieres que esto se aplique a más de un producto puedes pasarle un array con los identificadores de todos los productos.
En el ejemplo ordenas que muestre un mensaje vacío para que el usuario sin identificar no vea nada, pero si prefieres mostrarle un texto indicando que, para ver el contenido, debe acceder a su cuenta en la web, puedes modificarlo por lo siguiente:
$message ='Para ver el contenido debes haber adquirido...';
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.
Si quieres ponérselo aún más fácil a tu cliente puedes crear una variación de bloque para que pueda elegir directamente el bloque desde la interfaz de usuario. Puedes echar un ojo en a este tutorial en el que lo expliqué para Restrict Content Pro.
Conclusiones
Ahora ya sabes cómo conseguir que cualquier bloque solo sea visible para los usuarios que hayan comprado un producto de Easy Digital Downloads en tu web.
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. 😉