Contenido

Ocultar contenido a los usuarios no registrados

13 May

+ 12

AyudaWordpress nos muestra un tutorial muy interesante para ocultar contenido a los usuario no registrados mediante el uso de ShortCodes.

Y es que con unas pocas líneas en WordPress se pueden hacer cosas realmente útiles y potentes.

// Functions.php
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 'Para ver este contenido, <a href="' . site_url('wp-login.php?action=register', 'login') . '">debes estár registrado</a>';
}

Una vez añadido a nuestro functions.php podremos usar [visitante][/visitante] para ocultar el contenido que queramos a los visitantes no registrados.

[visitante]
Aquí pones lo que te apetezca que quieras que vean solo los no registrados
[/visitante]

Más opciones en AyudaWordpress.

  • Genial el tutorial.

    Yo añadiría una cosilla.
    Los shortcodes no se parsean si no están escritos en un artículo/página, por lo que si lo pones en una barra lateral o en cualquier otra parte de tu código, no funcionará.

    Si quieres que funcione, deberías escribir algo como:

    
    <?php _e('[visitante]bienvenido, visitante [/visitante]'); ?> 
    

    y WordPress lo parseará correctamente.

  • @RaveN: RaveN podrias especificar mejor tu ejemplo?

    Esa linea que escribiste, se reemplaza por alguna linea del codigo de aNieto2k o se agrega?

    Si se agrega, podrias poner exactamente donde?

    Si puedes poner un ejemplo bien clarito y facil te lo agradesco!

    Un gran abrazo desde Uruguay, y mucha fuerza que el sitio esta espectacular!

  • @javi: Ese código es para añadir poder aprovecharte del código del artículo en cualquier parte del theme. No necesariamente en el post.

    Así que lo puedes colocar donde quieras de tu theme 😀

  • @aNieto2k:

    Gracias por tu respuesta, pero ya lo he probado y no funca, el tema es el siguiente:

    Yo quiero hacer q una ves registrado el usuario pueda acceder a determinados botones de previlegio ubicados en una sidebar, para que por ejemplo pueda acceder a las descargas etc…, esos botones son imagenes.jpg adornadas con efectos visuales (el efecto acordion en este caso) producidos por scripts cargados en el .

    Antes que nada te comento que el codigo que nos dio RaveN, tiene un error, se olvidó de cerrar unas comillas miralo bien. A mi me frenó en las pruebas jaja

    El codigo que agrego a mi functions.php y NO me funciona para ocultar elementos de mi sidebar es el siguiente:

    
    <?php
    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 'Para ver este contenido, <a href="' . site_url('wp-login.php?action=register', 'login') . '" rel="nofollow" >debes estár registrado</a>';
    }
    ?>
    

    Asi es tal como lo tengo en functions.php.

    Voy al elemento de mi sidebar que quiero ocultar del visitante NO registrado agregandole el [visitante] y cerrando con [/visitante]

    aca un ejemplo de como lo hago:

    
    [visitante]
    
    
    
    
    
    
    <a href="EL ENLACE DE PRIVILEGIO AL USUARIO REGISTRADO" rel="nofollow"%gt; </a>
    
    
    
    
    
    [/visitante]
    

    y no funciona… 🙁

    me aparece en la sidebar el texto de [visitante]… la boton visible para todo el mundo (cosa que no quiero) y el cierre mostrado tambien en texto de … [/visitante]

    O sea… no asocia la accion.

    aNieto2k te agradezco toda tu ayuda y tiempo para ayudarme, muchas gracias, salu2!

  • @javi: Deberías escribir esto en su lugar.

    
    <?php _e('[visitante]AQUI LO QUIERES QUE VEA EL VISITANTE [/visitante]'); ?>
    
  • @aNieto2k:

    No hay forma, no me funciona ese codigo. 🙁

  • Definivamente esta implementación no funciona de ninguna manera, el código que se introduce en el archivo functions.php debe estar mal porque provoca error y tira al dashboard.

    No sé quién lo había probado porque me temo que no soy el único

  • Lo que necesito hacer es justamente lo contrario…
    Necesito mostrar el contenido de los post para los usuarios registrados, y que los no registrados vean un cartel de «contenido restringido, registrese por favor».

    Pero sin shortcodes en cada post, porque tengo cargados cientos ya, y sería complejo. ¿Hay alguna forma sencilla de hacer esto?. Gracias!

    • @Hugolatra: Podrías usar el mismo código que en el shortcode pero en el theme (probablemente en el index.php).

      Básicamente, deberías buscar the_content() en tu theme, y lo cambias por esta estructura.

      
      <?php
      if ( is_user_logged_in()) {
      	the_content();
      } else {
      	echo "Aquí el texto que quieras"
      }
      ?>
      

      Cuentanos.

    • @aNieto2k: Hay que sacarse el sombrero cuando alguien tiene tanto conocimiento sobre un tema. Me contestaste en 9 minutos!!.

      A excepción de la falta del punto y coma despues del echo, el código funciona a la perfección. 😀

      Modifiqué el single.php por ahora, luego voy a ver cómo lo adapto para la página inicial, posiblemente dejando solamente los títulos de cada post.

      Es exactamente lo que necesitaba, y al modificar el theme no depende de la version del WP.

      Sinceramente, muchas gracias desde Mar del Plata, Argentina.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.