Existen muchos plugins para mostrar u ocultar contenidos a diferentes tipos de usuarios, desde los que permiten hacerlo de forma sencilla y rápida en función del rol de usuario, como éste, hasta los que son auténticas “bestias” capaces de gestionar niveles de acceso, content dripping, etc, como WooCommerce Memberships.
Pero a veces necesitamos algo mucho más sencillo: simplemente mostrar un mensaje, un banner o un cupón solamente visible a los usuarios registrados. Pues no, no necesitas ningún plugin para eso. Y hay más de una forma de hacerlo.
Tabla de contenidos
Mostrar contenido sólo a usuarios registrados con la función is_user_logged_in
La primera de ellas es mediante código, haciendo uso de la función is_user_logged_in(), que devuelve verdadero si el usuario actual está identificado, y falso si no lo está.
Es decir, si metemos nuestro mensaje dentro de un condicional cuya condición sea is_user_logged_in(), sólo se mostrará en pantalla para los usuarios registrados y logueados:
if (is_user_logged_in()) :
?>
Este mensaje sólo se mostrará en pantalla a los usuarios registrados e identificados. Los invitados no podrán verlo.
¿La forma de poner eso dentro del contenido? Siempre puedes usar el plugin Insert PHP, que te permite insertar bloques de código dentro de cualquier contenido, o bien (mucho mejor) te puedes hacer un shortcode que lo haga.
Un shortcode que oculta contenidos a usuarios que no están registrados
Por ejemplo, algo así:
[usuarios]
Este mensaje y esta imagen sólo se mostrarán en pantalla a los usuarios registrados e identificados. Los invitados no podrán verlos.
[/usuarios]
Cómo hacer un shortcode así ya lo expliqué en su momento, pero por abreviarte el camino te lo doy hecho 🙂 :
add_shortcode ('usuarios', function ($atributos, $contenido = null) {
return is_user_logged_in() ? $contenido : false;
});
Ya lo ves, más fácil imposible. Sobre dónde poner ese código ya he hablado varias veces, por ejemplo aquí.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Contenido sólo visible para usuarios mediante CSS con la clase logged-in
El código siempre es la solución más potente y flexible, por supuesto, pero no todo el mundo se siente a gusto usándolo. Afortunadamente, para esto hay otra alternativa.
Se trata de una clase CSS que WordPress ya incluye al contenido (la aplica al body de hecho) cuando el usuario está identificado, la clase .logged-in.
Esto nos permite discriminar mediante CSS lo mostrado a un usuario registrado e identificado y a uno que no lo está. Basta con crear una clase específica para ello, y luego establecerla como no visible por defecto, a no ser que esté incluida en la clase .logged-in. Por ejemplo:
.solo-usuarios{display:none;}
.logged-in .solo-usuarios{display:initial;}
Después bastará con rodear nuestro contenido exclusivo para usuarios con la clase que hemos creado:
Este texto y esta imagen sólo los verán los usuarios identificados.
De todas formas, no confíes tus secretos a este método: mientras que el método anterior, por código, sólo genera el contenido si el usuario está identificado, el método por CSS lo genera siempre y lo oculta a los invitados. Sin embargo, la información está ahí, y se puede ver simplemente mirando el código fuente en el navegador.
Guillermo dice
Hola Enrique. Estoy intentando que se oculte el campo y botón de los cupones en la pagina del carrito para usuarios que no esten registrados. He editado el archivo cart.php y en la parte que creo muestra esos datos he puesto el condicional IF que enseñas más arriba. Pero no se si está bien, supuestamente no lo muestra ya, aunque no sé seguro si estoy estropeando otra cosa. Esta es la parte del codigo donde lo he puesto:
<input type="text" name="coupon_code" class="input-text" id="coupon_code" value="" placeholder="” /> <button type="submit" class="button" name="apply_coupon" value="”>
<button type="submit" class="button" name="update_cart" value="”>
Estaría bien así? Muchas gracias.
Un saludo.
Guillermo dice
Anda, si no ha salido la mayoría del codigo que he puesto!
No veo que se pueda insertar una imagen para enviártela.
jose dice
Excelente tutorial bro me salvaste de comprar una versión PRO de $29
Andy dice
Buenas tardes amigo Enrique, cuando agrego un shortcode dentro de ese shortcode al parecer no me reconoce el shortcode que estoy agregando no se si en el php el me elimina los corchetes….
Vero dice
Hola! Habría alguna función para hacer lo mismo pero que si es usuario normal o no logueado no lo viera y si es suscriptor sí? Gracias
Enrique J. Ros dice
Hola Vero
Eso depende de si la suscripción lleva aparejada una membresía. Si es así (que es lo habitual) revisa la documentación del plugin de membresías que uses, suelen incorporar shortcodes que permiten mostrar contenido sólo a los miembros.
Un saludo
vero dice
Hola Enrique, gracias por contestar, me he explicado fatal. En realidad lo que quiero hacer es un apartado de la tienda oculto para colaboradores (otras tiendas a las que les suministramos), a los que yo doy un correo y una contraseña (siempre el mismo), y al entrar pueden ver un apartado más de la tienda y sus precios.
Enrique J. Ros dice
Hola Vero
Echa un vistazo a estos plugins, es posible que alguno de ellos te sirva para lo que quieres hacer.
Un saludo