• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
Inicio / Tutoriales / Plugins / Contenido restringido para usuarios usando shortcodes

Contenido restringido para usuarios usando shortcodes

Contenido restringido para usuarios

[ 17 julio 2017 ] [ Actualizado: 8 agosto 2017 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Avanzado] [ ]

seguridad

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

En este artículo veremos cómo restringir parte del contenido de tus artículos, sin usar plugins, para que sólo puedan verlo determinados usuarios o grupos de usuarios.

 

1- Generalidades

Usaremos la funcionalidad de shortcodes en WordPress, podemos colocar el código directamente como parte de los archivos del theme, en functions.php, sin embargo es mejor centralizar nuestro código a través de un plugin de Snippets.

 

2- Contenido restringido para usuarios registrados

Para restringir parte del contenido de entradas y que sólo sea accesible para usuarios registrados, puedes usar el siguiente código:


add_shortcode('REGISTRADO','mostrar_contenido_usuario_registrado');

function mostrar_contenido_usuario_registrado($atts, $content = null){
	global $wp;
	$current_url = home_url(add_query_arg(array(),$wp->request));

	if ( ! is_user_logged_in() ){
		return '<div>Regístrate para ver el contenido...<a href="'.wp_login_url($current_url).'" >Ir al Registro</a></div>';
	}
	return $content;
}

 

3- Contenido restringido para usuarios visitantes

En el caso que quieras mostrar sólo parte del contenido para usuarios visitantes, puedes usar el siguiente código:


add_shortcode('VISITANTE','mostrar_contenido_usuario_visitante');

function mostrar_contenido_usuario_visitante($atts, $content = null){
	if ( ! is_user_logged_in() ){
		return $content;
	}
	return '';
}

 

4- Contenido restringido para roles de usuarios

La lógica es la misma que las anteriores, en el caso de usuarios para un determinado rol puedes usar la funciones de WordPress para comprobar qué rol tiene un determinado usuario, tal como se muestra a continuación:


add_shortcode('AUTOR','mostrar_contenido_usuario_autor');

function mostrar_contenido_usuario_autor($atts, $content = null){
	$user = wp_get_current_user();
	if ( in_array( 'author', (array) $user->roles ) ){
		return $content;
	}
	return 'El usuario debe ser autor...';
}

 

5- Uso de los shortcodes

Finalmente, luego que tengas alguno de los códigos anteriores agregados en tu sitio, entonces puedes usar los Shortcode como parte del contenido de tus entradas tal como se muestra a continuación.


[REGISTRADO]
Contenido para usuario registrado
....
[/REGISTRADO]

[VISITANTE]
Contenido para usuario visitante
....
[/VISITANTE]

[AUTOR]
Contenido para usuarios del grupo autores
....
[/AUTOR]

 
¿Aún con dudas?, en el siguiente video se detalla cada uno de los puntos anteriores.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Mostrar mensajes en la administración de WordPress y en Gutenberg Mostrar mensajes en la administración de WordPress y en Gutenberg
  • Configura el theme Twenty Twenty de WordPress Configura el theme Twenty Twenty de WordPress
  • Mostrar el nombre del archivo que esta usando un tema sin usar plugins Mostrar el nombre del archivo que esta usando un tema sin usar plugins
  • Archivo HTML como página de inicio en WordPress Archivo HTML como página de inicio en WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (3 votos, promedio: 5,00 de 5)
Cargando…

Interacciones del lector

Comentarios

  1. José Mª Labarta

    19 julio, 2017

    Gracias por este magnífico post, pero tengo un pequeño problema, después de logearme no me redirige a la página donde esta el shortcode.(se queda en el panel de administración) me gustaria que me devolviera a la página o post.
    He hecho algo mal ?
    Hay que añadir algo más de código?

    • Jhon Marreros Guzmán

      19 julio, 2017

      Hola José, gracias por el comentario, efectivamente había que hacer una mejora, ya la he implementado en el código del punto 2, la función wp_login_url() acepta un parámetro opcional que es la url de redirección.
      Saludos.

  2. José Mª Labarta

    19 julio, 2017

    Gracias, eres un crack

  3. Sergio

    23 agosto, 2017

    !Magnificó artículo Jhon¡
    Estoy intentando insertar 2 roles con el código (4- Contenido restringido para roles de usuarios
    ) pero no me es posible, me da error el array, algo hago mal. ¿Como podría decir que el contenido sea visible para 2 roles?

  4. Jhon Marreros Guzmán

    24 agosto, 2017

    Hola, supongo que has puesto el primer parámetro com array, prueba hacerlo con un or, es decir por ejemplo:

    in_array( 'author', (array) $user->roles )  || in_array( 'editor', (array) $user->roles ) 
    
  5. Sergio

    24 agosto, 2017

    Muchísimas gracias Jhon, a funcionado perfectamente!!

    Enhorabuena por esos fantásticos tutoriales 🙂

  6. Raul

    29 septiembre, 2017

    hola buen día.

    me gustaria hacer un area de miembros donde se tengan que registrar al sitio web y a la hora de registrarse solo vea ese contenido mi problema es que son varios usuarios. como puede hacer que el usuario este registrado no vea la otra información. y este oculto de los demas usuarios registrados.

    • Jhon Marreros Guzmán

      29 septiembre, 2017

      Hola, tienes que trabajarlo a nivel de roles, si es necesario crear varios roles, los roles son grupos de usuarios, los permisos le das a los roles no a usuarios individuales, si te complicas hacerlo por código, existen plugins de restricción de contenido a nivel de rol, revisa por ejemplo : https://es.wordpress.org/plugins/restrict-content-by-role/

  7. Leandro

    26 junio, 2018

    buenas noches, yo estoy intentando hacer una web donde tengas que logearte para ver el resto de las paginas, pero no lo he logrado ni con plugins, ni poniendo el resto de las paginas en privado y asignaando roles, me podrias ayudar porfa?

    • Jhon Marreros Guzmán

      27 junio, 2018

      Hola has probado con este plugin? : https://es.wordpress.org/plugins/wp-members/

  8. Lynn

    3 julio, 2019

    Hola. He puesto el código para mostrar contenido por roles de usuario y funciona correctamente. Pero ahora quiero hacer otro shortcode que haga lo mismo con el mismo rol de usuario pero sin mostrar mensaje alguno a los usuarios que no son de dicho rol, lo intenté con el mismo código cambiando el shortcode pero dejando la parte del rol de usuario igual y eliminando la parte de » return ‘El usuario debe ser autor…’; » guardo los cambios y sale sin errores pero al activar de nuevo el plugin de funciones sale «el plugin no se ha activado porque ha provocado un error fatal» ¿Alguna idea para solucionarlo?

    • Jhon Marreros Guzmán

      4 julio, 2019

      Hola, por lo que comentas lo has realizado bien, prueba retornando un mensaje vacío y verifica, por ejemplo: return;

  9. sergio

    4 julio, 2019

    Hola Jhon, que tal?

    Estoy utilizando 2 fragmentos de código de más abajo para restringir contenido para dos roles «Clientes» y «Profesionales» en varias página y funciona perfectamente, aunque ahora tengo la situación que necesito restringir contenido pero para dos roles a la vez, es decir, tienen que poder ver la misma información «clientes» y «profesionales» a la vez.

    El shortcode que utilizo es este: [cliente, profesionales_salud] pero no funciona con el conjunto de dos roles a la vez (por separado; ejemplo ==> [cliente] si que funciona) . ¿Cómo podría implementarlo?

    Gracias por el magnífico tutorial 😉

    Un saludo

    /***********CÓDIGO UTILIZADO PARA CLIENTES*************/
    add_shortcode('cliente','mostrar_contenido_cliente');
    function mostrar_contenido_cliente($atts, $content = null){
    	$user = wp_get_current_user();
    	if ( in_array( 'cliente', (array) $user->roles ) || in_array( 'administrator', (array) $user->roles  ) ){  
    		return $content;
    	}
    	return 'Información exclusiva del Área Profesional';
    }
    
    /***********CÓDIGO UTILIZADO PARA PROFESIONALES*************/
    add_shortcode('profesionales_salud','mostrar_contenido_prof_salud');
    
    function mostrar_contenido_prof_salud($atts, $content = null){
    	$user = wp_get_current_user();
    	if ( in_array( 'prof_salud', (array) $user->roles ) || in_array( 'administrator', (array) $user->roles ) ){  
    		return $content;
    	}
    	return 'Información exclusiva del Área Profesional';
    }
    
    • Jhon Marreros Guzmán

      5 julio, 2019

      Hola, prueba poniendo: [cliente] [profesionales_salud]

  10. sergio

    5 julio, 2019

    Hola Jhon,

    Sí, eso ya lo probé, pero no funciona. Muestra el que esta mas cercano al cierre del contenido, en este caso [profesionales_salud].

    La idea seria algo así [cliente, profesionales_salud] contenido [/cliente, profesionales_salud], pero esto no funciona. Alguna idea?

    Gracias por tu ayuda Jhon.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral primaria

Únete a DecodeCMS

Recibirás como regalo:

Fundamentos de programación:
Guía base para entender la estructura de WordPress.

Mini curso en video de:
Cómo construir un plugin de entradas populares.

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social

Populares

Regenerar imágenes de miniaturas en WordPress

Cabecera fija en theme WordPress

Cambiar textos de traducción en WordPress

Modificar el orden de productos destacados en StoreFront

Recientes

  • Mostrar mensajes en la administración de WordPress y en Gutenberg
  • Configura el theme Twenty Twenty de WordPress
  • Mostrar el nombre del archivo que esta usando un tema sin usar plugins
  • Archivo HTML como página de inicio en WordPress
alojamiento wordpress

© logo decode pie Copyright 2019 | Todos los derechos reservados | Política de Privacidad