Contenido exclusivo a usuarios registrados con ‘shortcodes’

silencio

Hay algunos plugins por ahí que puedes utilizar si necesitas mostrar contenido exclusivo solo a usuarios registrados, pero Justin ha creado un tutorial muy completo de como hacerlo usando solamente ‘shortcodes‘, esas pequeñas piezas de código que puedes añadir al fichero ‘functions.php‘ de tu plantilla.

Vamos a ver como se hace, nos propone cuatro variables …

1. Contenido para usuarios que no están registrados

La mayoría del tráfico siempre proviene de usuarios no registrados (aunque en Ayuda WordPress somos casi 800 usuarios registrados) así que podemos definir contenido que se muestre solo a usuarios no registrados (y sin conectar). Esto puede servir para invitarles a registrarse, suscribirse al feed RSS, o simplemente mostrarles anuncios, tu eliges.

Abrimos el fichero ‘functions.php‘ de nuestro theme activo y le añadimos este código:

add_shortcode( 'visitante', 'shortcode_para_visitantes' );

function shortcode_para_visitantes( $atts, $content = null ) {
if ( ( !is_user_logged_in() && !is_null( $content ) ) || is_feed() )
return $content;
return '';
}

Luego, cuando escribas cualquier post o página, añade esto para mostrar contenido solo a usuarios que no estén conectados/registrados:

[visitante]

Aquí pones lo que te apetezca que quieras que vean solo los no registrados

[/visitante]

Ten en cuenta, eso si, que este contenido será visible también en el feed RSS, no como las siguientes dos técnicas, que no serán visibles en los feeds ni para usuarios no registrados

2. Contenido para usuarios registrados/conectados

En este caso vamos a mostrar cierto contenido solo a usuarios que estén registrados y conectados en tu sitio. El mimso estará oculto para el resto, y no se mostrará en los feeds.

De nuevo añadimos un pequeño codigo al fichero ‘functions.php‘ de nuestro theme activo:

add_shortcode( 'miembro', 'shortcode_para_miembros' );

function shortcode_para_miembros( $atts, $content = null ) {
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return '';
}

De este modo, cuando añadas algo entre las nuevas tags [miembro] solo lo verán los registrados:

[miembro]

Contenido que solo ven los usuarios registrados/conectados.

[/miembro]

3. Contenido dependiendo del perfil/capacidad de usuario

Este código es el más completo, ya que permite comprobar la capacidad del usuario y, basándose en su perfil, mostrar contenido de un tipo u otro. Incluso puedes añadir nuevos perfiles con el plugin Role Manager para rizar mas aún el rizo.

En esta ocasión, el código a añadir al fichero ‘functions.php‘ es este:

add_shortcode( 'acceso', 'shortcode_segun_perfil' );

function shortcode_segun_perfil( $attr, $content = null ) {

extract( shortcode_atts( array( 'capability' => 'read' ), $attr ) );

if ( current_user_can( $capability ) && !is_null( $content ) && !is_feed() )
		return $content;

return '';
}

Ahora viene lo bueno, pues definiremos en el mismo shortcode a incluir en nuestros posts la capacidad del usuario, en este ejemplo sería la de switch_themes (an administrator in the default WordPress setup):

[acceso capability="switch_themes"]

Esto solo lo ven los administradores, o sea tu.

[/acceso]

Cuando definimos en el código del fichero ‘functions.php‘ la capacidad de read solo marcamos la capacidad por defecto, luego, en cada shortcode, podemos añadir capacidades extra. Un ejemplo básico, en el que tendrían acceso todos los registrados sería este:

 

[acceso]

Me lees ¿no?

[/acceso]

4. Contenido para usuarios que no cumplan los requisitos

Estos shortcodes son fantásticos si quieres ocultar algo pero si quieres mostrar un mensaje a la gente a la que le ocultes «cosas» tienes que hacerles un pequeño cambio.

En cada uno de los códigos de arriba, justo antes de la última línea debes añadir esto:

return '';

En este caso, para el usuario que no tiene el perfil definido por el shortcode, no se le mostrará nada. Ahora bien, si quieres dejarle un mensaje haces un pequeño cambio::

return 'Lo siento, si te registras podrás ver mas cosas';

Y ya está, ahora eres tu el que tienes que animar a tus usuarios a registrarse y así poder disfrutar del contenido oculto: descargas, tutoriales, códigos, etc.

Vía

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(6 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

39 comentarios en “Contenido exclusivo a usuarios registrados con ‘shortcodes’”

  1. Pingback: Bitacoras.com

  2. Pingback: Ocultar contenido a los usuarios no registrados | aNieto2K

  3. Es interesante pero.. no es la finalidad de un blog llegar a cuanta más gente mejor ?

    No se hasta que punto es favorable o podrás influir en que la gente se registre. Supongo que dependerá del tipo de blog.

  4. @quicoto la verdad es que puede ser muy útil en casos que quieras compartir algún contenido específico a los usuarios registrados como algún PDF, una contraseña para acceder a una descarga…

    Saludos

  5. El código nº 2 no me funciona Fernando… quizás sea que no lo estoy pegando en el lugar correcto del fuctions.php; ¿¿podrás indicar ese detalle??

  6. Pingback: 10 Códigos útiles para WordPress | Blog and Web

  7. Pingback: 10 Códigos útiles para WordPress | Alojate.com Tu Proveedor de Web Hosting, Dominios, VPS, Servidores Dedicados, Factura Electrónica y Marketing para Buscadores en México

  8. tengo que hacer un blog donde los usuarios pueden ver una seccion especial segun su rol, esto me sirve para ello?

    y lo otro aprovechando necesito hacer lo mismo pero con el perfil, es posible hacer un perfil personalizado segun el rol?

    saludos

  9. Pingback: Contenido privado en Wordpress » ShareIT

  10. Joer… gracias por el artículo, justo lo que necesitaba, pero tengo un gran problema… mi theme no tiene archivo functions.php. ¿Cómo puedo solucionarlo?

    Gracias.

  11. El truco es interesante, pero relativamente inservible para los que tenemos un blog con cientos de entradas ya publicadas, puesto que tendríamos que ir editando una por una.
    Existe alguna forma (código) para que se oculten los posts solo en post.php (y solo algunas categorías) para que solo puedan verlos los visitantes que estén registrados?

    Gracias

  12. Pingback: Mostrar post solo a usuarios registrados en Wordpress?

  13. está muy bien, pero por ejemplo, si dentro de cualquiera de los codigos [visitante] o [miembro] meto un shortcode de mi theme, por ejemplo: [slider id="1"], este shortcode no funciona y sale como texto. ¿Cómo puedo solucionarlo?. Muchas gracias por el aporte!

    1. Justo lo que me ha pasado: soy inexperto y probé con add_action (‘init’, *) *= cualquiera de los shortcode que nointerpretaba: voy a tirar por hacerme un template anidando si se está logado que se vea el post y si no un formulario de acceso e invitación. Ya contaré…

    2. Victor Hugo Vásquez Ramirez

      En teoría la función «return do_shortcode($content);» te permitiría anidar los shortcode… Ejemplo:

      add_shortcode( ‘visitante’, ‘shortcode_para_visitantes’ );

      function shortcode_para_visitantes( $atts, $content = null ) {
      if ( ( !is_user_logged_in() && !is_null( $content ) ) || is_feed() )
      return do_shortcode($content);
      return »;
      }

  14. Hola de antemano te agradezco los consejos.. Me gustaria saber como hacer para que solomlos usuario registrados puedan ver, enlaces o contenido en el sidebar

    1. intenté con capability=»edit_posts» pero funciona para todos los niveles superaiores al 4 no se puede por condicionar por leve ?

  15. Hola a todos … Estoy intentando montar una red social con BuddyPress y me gustaría saber si hay manera de poder hacer que solo se vea la página de registro a los que visiten la web. O sea, que tengan que registrarse obligatoriamente antes de poder tener acceso al resto … Graciass

  16. Isaac Hernánd

    ¡Excelente! buscaba un pugin que hiciera esto pero es mucho mejor hacerlo de esta manera, así no tengo que preocuperme de todos los problemas derivados del uso de plugins.

  17. Buenas.

    Los contenidos se me ocultan cuando aplico el código (eso funciona bien) pero al mostrarse el contenido cuando un usuario se loguea, rompe el css que viene de shortcodes y no se ve correctamente.

    ¿sabes de alguna solución para esto?

    Te muestro como me aparece el contenido de dentro de la etiqueta [visitante].

    [list type=»arrow»][list_item]Llegada del grupo al Aeropuerto Federico Chopin Okecie en Varsovia[/list_item][list_item]Recibimiento y encuentro con el guía turístico de habla hispana, el cual va a acompañar al grupo durante toda la estadía en Polonia[/list_item][list_item]Traslado al Hotel. Check–in[/list_item] [list_item] Cena de bienvenida[/list_item][/list]

    Gracias.

  18. esta mas que interesante, es super este codigo y explicación pero como sabe el sistema que el «miembro» esta suscrito o no, para que aparezca el contenido que falta ademas para que le deje leer todo el contenido gente ya suscrita, gracias

  19. Hola, se podriadar masde una capacidad al usuario para ver el contenidoregistrado??, es decir, en este codigo que tienes mas arriba:

    [acceso capability=»switch_themes»]

    ademas de asignarle la capacidad de «switch_themes», si quiero asignarle otras al mismo usuario como lo podria hacer??

    Si por ejemplo le doy a un usuario la capacidad de ver el contenido registrado en los post de HTML5, le pondria:

    [acceso capability=»HTML5″]

    y si quiero darle al mismo usuario la capacidad de ver tambien el contenido para usurios registrados de los post «CSS3″, puedo ponerle:

    [acceso capability=»HTML5, CSS3»]

    y asi sucesivamente con todas las capacidades que necesite el usuario??

    Gracias y salu2

  20. Hola. justo lo que necesitaba, pero tengo 2 dudas, escogí el método según el rol de usuario, y entiendo que con ese código muestra a todos los registrados, el rol que cree se llama user_vip, que le edito a la función para que solo muestre el texto a ese rol.
    2- como le agrego style a la función «Return» quiero personalizar el mensaje que le salga a los demás usuarios a los subs y visitantes, para que salga el mismo mensaje.
    Gracias de antemano..

  21. Buenísimo artículo Fernando!! Me pregunto, hay alguna manera de darle acceso a dos roles a la vez? lo estoy intentando pero no consigo hacerlo funcionar

    [acceso capability=»switch_themes y OTRO MÁS»]

    Gracias por tu tiempo.

    1. ¿Qué dos roles?

      Piensa en que si eliges un rol «bajo» el resto superiores podrán también. Por ejemplo, si eliges edit_posts (que es lo que puede hacer un colaborador como máximo, también lo pueden hacer el editor y el admin. O si eliges publish_posts o upload_files es lo que diferencia al autor del colaborador, y también servirá para el editor o admin.

      Echa un vistazo a esto:

      https://ayudawp.com/perfiles-capacidades-wordpress/

      1. Es un perfil no preconfigurado por WordPress, si no creado con el plugin «Members». Tengo creados varios roles extras como mayoristas, etc

          1. Hola Fernando.

            Yo estoy como Admin de WordPress pero no puedo ver el rol de «distribuidor» que he creado y que he insertado en el shortcode. Solo lo pueden ver los «distribuidores» ¿se supone que debería verlo como Administrador?

            Gracias.

          2. Hola Fernando, la forma de mostrar el contenido oculto a mas de un «perfil o rol» es esta:
            [acceso capability=»primer_rol»»segundo_rol»].

            Espero le sirva a alguien más 😉

            Gracias Fernando

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido