• 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
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
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

  • Cómo eliminar todos los productos de WooCommerceCómo eliminar todos los productos de WooCommerce
  • Agrupar los resultados de búsqueda en WordPressAgrupar los resultados de búsqueda en WordPress
  • tipos de complementos de WordPress5 tipos de complementos de WordPress
  • Sincronizar WooCommerce y Google SheetsSincronizar WooCommerce y Google Sheets
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (4 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

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.

  11. Jose Luis

    2 marzo, 2021

    para quienes no les funcione, tienen que purgar el caché antes de probarlo, usen un plugin quese llama W3 Total Caché y en la opción purge all caché, y listo, porque si no están bajando la versión anterior a sus modificaciones.

    Saludo!

    • Jhon Marreros Guzmán

      2 marzo, 2021

      Gracias por el aporte.

  12. Estephany Tinajero

    11 febrero, 2022

    Hola, y que pasa si tengo un login externo al de wordpress que ha sido programado. Tengo una sección de cupones y estos son los que quiero restringir a los visitantes que no se encuentran en nuestra base de datos. Tendré que incluir la variable de session programada en el login? Te agradecería mucho tu respuesta!

    • Jhon Marreros Guzmán

      17 febrero, 2022

      Hola, lo que comentas es algo muy particular y posiblemente se requiera hacer a través de código personalizado. Saludos.

  13. franc

    11 mayo, 2022

    Magnifico artículo pero me queda una duda, si ya estás registrado en un rol como puede registrarse el usuario en otro rol, o en dos roles a la vez?
    gracias de antemano

    • Jhon Marreros Guzmán

      13 mayo, 2022

      Hola, podrías revisar el siguiente enlace en donde hay una opción a través de un plugin o a través de código: https://stackoverflow.com/questions/27420705/how-to-assign-multiple-roles-for-a-user-in-wordpress

  14. Dayana

    13 junio, 2022

    Hola, estoy intentando hacer content dripping con shortcodes pero no se donde debo poner los codigos o si me podrias indicar si es fundamental el comprar una extension de plugin que lo haga

    • Jhon Marreros Guzmán

      13 junio, 2022

      Hola, si ya tienes los shortcodes hechos, deberían funcionar sin problemas como parte de tu contenido, puedes usar un bloque de tipo shortcode en el editor Gutenberg.

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

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

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

Populares

Post Meta desde la API de WordPress

Qué son los Shortcodes en WordPress y cómo usarlos

Añadir una nueva zona de Widgets a un theme WordPress

Sincronizar WooCommerce y Excel

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados