Contenido condicional basado en usuarios

Mostrar contenido en WordPress según el usuario que está conectado

A raiz de un comentario en esta página, pensé que sería interesante compartir una manera rápida de poder separar los contenidos de una web basada en WordPress según el usuario que está conectado.

Por ejemplo, pongamos que quiero mostrar una barra lateral condicional para mis usuarios, una función, o simplemente añadir una nota o aviso dirigida a alguien en concreto.

Conviene aclarar que cuando hablamos de “usuarios” nos referimos a usuarios de WordPress, es decir, que están dados de alta en el sistema, sea con el rol de administrador, editor, autor, colaborador o suscriptor (no usuarios de la web en general).

La versatilidad de WordPress en cuanto a la gestión de usuarios es muy completa, por lo que para hacer este tipo de ajustes en principio no necesitamos ningún plugin. En realidad es muy fácil de conseguir, siempre y cuando nos encontremos cómodos editando las plantillas de WordPress y ajustando algunos detalles básicos en la lógica condicional de PHP.

Vamos a ver algunos ejemplos.

Mostrar u ocultar contenidos según el nombre o ID de cada usuario

Para empezar podemos utilizar la función get_currentuserinfo(), que nos permite acceder a información del usuario como su nombre, su número de identificador, su dirección de email, etc.

<?php // Accedemos a la variable global
	  global $current_user;
	  
	  // Obtenemos la informacion del usuario conectado y asignamos los valores a las variables globales
	  // Mas info sobre 'get_currentuserinfo()': 
	  // http://codex.wordpress.org/Function_Reference/get_currentuserinfo
	  get_currentuserinfo();
	  
	  // Guardamos el nombre del usuario en una variable
	  $usuario = esc_attr($current_user->user_login);

	  // Condicionales: mostramos contenido segun el nombre de cada usuario	  
	  if ($usuario === 'Admin') {
		  // Aqui incluimos el contenido para el usuario 'Admin'
	  } elseif ($usuario === 'Daniel') {
		  // Aqui incluimos el contenido para el usuario 'Daniel' 
	  } else {
		  // Aqui incluimos el contenido para el resto de usuarios y visitantes
	  } 
?>

Podríamos añadir el código anterior en la plantilla “sidebar.php”, o “header.php” para dar la bienvenida a cada usuario llamándole por su nombre, o por ejemplo para mostrar una foto diferente según el usuario. Las posibilidades dependen de la imaginación de cada uno.

Lo mismo se puede hacer si, en vez de diferenciar el contenido según el nombre, queremos hacerlo según su número de identificador (ID), su dirección de correo o su nombre de pantalla. Por ejemplo, para mostrar contenido diferente según el ID de cada usuario:

<?php 
$user_id = get_current_user_id();
if ( is_user_logged_in() ) {
     if ( 2 == $user_id ) {
	// Contenido exclusivo para el usuario con ID=2
     } elseif ( 3 == $user_id ) {
	// Contenido exclusivo para el usuario con ID=3
     } else {
	// Contenido para el resto de usuarios registrados
        // Cualquier ID menos los anteriores (2 y 3)
     }
} else {
     // Contenido para los usuarios que no están registrados
}
?>

Condicionar los contenidos según el rol y permisos del usuario

Separar los contenidos de nuestra web según el rol o los privilegios de cada usuario es aun más fácil, gracias al sistema de roles y capacidades que WordPress incluye desde la versión 3.0:

<?php if (current_user_can('update_core')) {
		  // Contenido para los usuarios con capacidad para actualizar el sistema (es decir, administradores)
		  echo 'Tú debes ser el administrador, ¿verdad?. Bienvenido a casa!';
     } elseif (current_user_can('edit_pages')) {
		  // Contenido para editores y usuarios con un rol superior (con capacidad para editar páginas)
		  echo 'Hola editores y administradores de esta web!';
     } ?>

Antes de la inclusión de este sistema de capacidades, podíamos separar a los usuarios según su nivel. Aunque sigue funcionando en las versión actuales de WordPress, esta práctica se considera obsoleta:

<?php global $current_user;
	  get_currentuserinfo();
	  $usuario = esc_attr($current_user->user_level);
	  if ($usuario == 10) {
		  // Contenido para los usuarios cuyo nivel sea 10, es decir, administradores:
		  echo 'Tú debes ser el administrador, ¿verdad?. Bienvenido a casa! Tu nivel de usuario es: ' . $usuario;
	  } elseif ($usuario == 7) {
		  // Contenido para los usuarios cuyo nivel sea 7, es decir, editores:
		  echo 'Hola editor! Tu nivel de usuario es: ' . $usuario;
	  } elseif ($usuario == 2) {
		  // Contenido para los usuarios cuyo nivel sea 2, es decir, autores:
		  echo 'Hola autor! Tu nivel de usuario es: ' . $usuario;
	  } else {
		  
	  }

También podemos especificar niveles de usuarios utilizando otros operadores de comparación como ‘<' (menor que) o '>‘ (mayor que):

	  if ($usuario >= 7) {
	  	echo '<br />Esto es solo para administradores y editores. Nadie más puede verlo.';
	  } else {
		echo '<br />Si estás viendo este mensaje es que no eres editor ni administrador de esta web.';
	  } ?>

Pero recuerda, los niveles de usuario dejaron de utilizarse hace bastante tiempo en favor del sistema de roles y capacidades.

Cómo crear un tipo de usuario nuevo (añadir rol)

Algo muy útil que WordPress nos permite hacer fácilmente es crear roles nuevos y asignarles capacidades exclusivas. Por ejemplo, vamos a imaginarnos que tenemos un cliente que necesita acceder a una parte de la web (un widget, una barra lateral, un texto…):

<?php // Accedemos a la variable global creada por WordPress
	  global $wp_roles;
	  // Añadimos un nuevo rol para este tipo de usuarios
	  $wp_roles->add_role('cliente', 'Cliente', array(
      	'read' => true, // Les damos permisos de lectura (como a los suscriptores)
      	'edit_posts' => false, // No tienen permisos suficientes para editar entradas
      	'delete_posts' => false, // No tienen permisos suficientes para eliminar entradas
      	'leer_datos' => true // Creamos una capacidad nueva exclusiva para este rol
      ));
 
      if (current_user_can('leer_datos')) {
	      // Contenido exclusivo para el nuevo rol que hemos creado
	      echo '¡Hey, tú tienes permiso para leer esto!';
	  } else {
		  // Mostramos (o no) un contenido diferente para el resto de usuarios
	  }

	  // Para eliminar el nuevo rol que hemos creado:
	  // global $wp_roles;
	  // $wp_roles->remove_role('Cliente');
?>

Mostrar contenido según el estado (conectado/no conectado)

De manera más general, podemos diferenciar a los usuarios conectados, del resto de personas que visitan nuestra web para mostrarles contenido, aplicar una funcionalidad concreta o cualquier cosa:

<?php if (is_user_logged_in()) {
		  // Contenido visible únicamente para usuarios conectados
	  } else {
		  // Contenido para el resto de visitas (o usuarios no conectados)
	  } 
?>

Uno de los usos más frecuentes y útiles de esta función es cargar el código de seguimiento de estadísticas (Google Analytics, por ejemplo) solo para los usuarios que no están conectados:

<?php // Si el usuario no esta conectado...
	  if (!is_user_logged_in()) {
		  // Aqui copiamos el código de Analytics
	  } 
?>

En este otro artículo encontrarás información sobre cómo redirigir a los usuarios a páginas diferentes al registrarse en el sistema.

Plugins relacionados

  • Optional Content: Mostrar u ocultar contenido de manera condicional en una página o post (basado en shortcodes). Es decir, nos permite restringir el acceso de fragmentos de una entrada o página a un tipo de usuario.
    URL: http://wordpress.org/extend/plugins/optional-content/
  • Restrict Content Pro (Premium Membership Plugin): Completo sistema de gestión de socios/miembros, suscripciones y contenido restringido. Permite crear niveles (gratuito, prueba y premium), seguimiento de pagos, ofrecer descuentos y contenidos privados solo para suscriptores.
    URL: http://pippinsplugins.com/restrict-content-pro-premium-content-plugin/
  • Hide This: este plugin utiliza shortcodes para ocultar partes del contenido en entradas y páginas. Permite especificar bastantes opciones, como ocultar contenido para todo el mundo, oculto para todos excepto para un usuario determinado, sólo para usuarios conectados (o no conectados), sólo para uno o varios roles específicos (por ejemplo: suscriptor y colaborador), para un usuario específico con un nombre de usuario, ID o email determinados…
    URL: https://wordpress.org/plugins/hide-this/

Comentarios

  1. Matias

    Buenas noches,
    primero quiero mencionar que el post está muy bien.

    Quisiera saber como hacer que una parte del sitio sea visible (en mi caso un slide) en una página determinada. Espero puedas ayudarme!.

    Desde ya, muchas gracias.
    Saludos

  2. Daniel

    En ese caso lo mejor es utilizar las etiquetas condicionales de WordPress. Si, por ejemplo, necesitas que el slideshow solo aparezca en la página de inicio, puedes utilizar: “is_home()” o “is_front_page()”. Si quieres que salga solamente en la página con el ID 3: “is_page(3)”.

    Existen un montón de etiquetas condicionales. Aquí encontrarás la lista completa:

    http://codex.wordpress.org/Conditional_Tags

  3. Kop

    Hola Daniel, soy novato en este mundillo, me parece muy interesante tu web. Yo en concreto necesitaría saber como puedo ocultar un contenido concreto, no todo, del sidebar de mi web, veo siempre para ocultar post o páginas, pero no se que código o plugin utilizar para esto, y de dónde debo colocarlo. Te estaría muy agradecido si me ayudaras un saludo.

  4. Daniel

    Puedes ocultar contenido (páginas, bloques, elementos o cualquier cosa) con los condicionales que WordPress trae de fábrica, y mostrarlo solo para usuarios conectados, para el administrador, solo en páginas determinadas, categorías, según la hora del día, etc.

    Por ejemplo, si quieres que un bloque del lateral (sidebar) solo lo pueda ver el administrador, podrías incluirlo entre condicionales. Así:

    if ( current_user_can('update_core') ) :
    echo 'Esto solo lo verá el usuario administrador del sistema.';
    endif;
    

    Aquí tienes toda la información:
    http://codex.wordpress.org/Function_Reference/current_user_can
    http://codex.wordpress.org/Conditional_Tags

  5. jonathan

    Hola daniel, ante todo muy bueno el post. Lo que me preguntaba es como se puede hacer para hacer un login en el template principal y que una vez le haces click en login te lleva a una pagina x.

  6. Daniel

    Para incrustar un formulario de login puedes utilizar la función “wp_login_form()” en cualquier punto de las plantillas.

    Después, una de las opciones disponibles de esta función es “redirect”, precisamente para redireccionar al usuario a una página determinada.

    La función con todas las opciones sería:

    $login_args = array(
    	'echo' => true,
    	'redirect' => 'http://www.ejemplo.com/',
    	'form_id' => 'loginform',
    	'label_username' => __( 'Nombre de usuario' ),
    	'label_password' => __( 'Contraseña' ),
    	'label_remember' => __( 'Recordarme' ),
    	'label_log_in' => __( 'Entrar' ),
    	'id_username' => 'user_login',
    	'id_password' => 'user_pass',
    	'id_remember' => 'rememberme',
    	'id_submit' => 'wp-submit',
    	'remember' => true,
    	'value_username' => NULL,
    	'value_remember' => false 
    	); 
    wp_login_form( $login_args );
    
  7. Daniel

    Hola Daniel, para felicitarte por el excelente post y para preguntarte un detalle. Como sería si quisiera mostrar el contenido (video) después de un click es decir el usuario ingresa a la entrada y visualiza un botón donde al dar click pasa por un a cortador de link y luego regresa al mismo post pero con la diferencia que ya se puede dar play al video.

  8. Daniel

    Gracias Daniel. Si lo de pasar por un acortador de URLs es por las estadísticas, me imagino que sería mejor utilizar simplemente Analytics.

    Por lo demás, supongo que habría que crear una cookie al salir de la página y gestionar la vuelta desde la web que genera la nueva dirección.

  9. Teresa

    Hola Daniel, primeramente felicitarte por el post. Yo lo que querría es que cada usuario registrado tuviera su carpeta privada, que solo el pudiera ver y a partir de formularios pudiera subir archivos, imágenes… etc a su carpeta y al mismo tiempo poder crear también subcarpetas dentro de su carpeta y que las pudiera editar en cualquier momento. Puedo hacer esto instalando dropbox o similar? Perdona por la pregunta pero estoy totalmente perdida.

  10. Daniel

    Gracias Teresa. Lo que comentas parece un poco complicado. Una solución sencilla podría ser como dices utilizar Dropbox y que cada usuario enlazara los archivos desde allí, pero así no se gestionarían todo desde WordPress.

    Probablemente exista algún plugin que permita crear carpetas privadas para cada usuario, pero el funcionamiento por defecto solo tiene en cuenta los permisos de los archivos y los usuarios, pero no su ubicación real.

  11. Raul

    Hola Daniel, excelente tu post, déjame decirte. Bien detallado, me sirvió en una sección de mi blog. Ahora abusando de tu confianza quisiera que me despejases una duda, es la siguiente:

    Si sería factible que me facilitases una sentencia (if – else) algo parecido como explicaste en tu post “Mostrar contenido según el estado (conectado/no conectado)” pero con la diferencia que en la sentencia si en caso no es un usuario registrado que no muestre el contenido pero que haya un “enlace” para registrarse que al dar click re-direccione a otra página para registro.

    Saludos y éxitos Daniel

  12. Raul

    Disculpa Daniel, soy el mismo de hace un momento. No quisiera caer pesado pero es que soy un novato en lo que refiere php y pues, viendo que eres experto en la materia, quisiera terminar despejando la duda completa que tengo.

    Lo mismo que antes pero la diferencia sería que el usuario no registrado, al dar click a otro enlace, re-direccione a una página para llenar una encuesta y una vez que la llene (y enviarla) regrese a la misma página, pero ya visualizando el contenido oculto, que sería exclusivo para los registrados que antes de pasar por la encuesta no se mostraba para los no registrados.

  13. Daniel

    Hola Raul.
    Para mostrar contenido diferente según si el usuario está registrado o no, puedes usar “is_user_logged_in()”, como en el ejemplo de arriba, e incluir la función “wp_register()” para los no registrados. Así:

    if ( is_user_logged_in() ) {
    	// Contenido que solo pueden ver
    	// los usuarios registrados
    } else {
    	// Para no registrados, mostramos
    	// el enlace al formulario de registro
    	wp_register();
    }
    

    Aquí tienes la página del Codex que explica cómo funciona “wp_register()”:
    http://codex.wordpress.org/Function_Reference/wp_register

    Si en vez de al formulario de registro quieres enviarles a otra página (la encuesta), solo tienes que añadir el enlace a esa página.

  14. Leandro

    Hola Daniel.. Espero estes bien,

    mira soy nuevo en esto y me gustaría hacer esto del post. pero no entiendo mucho. ¿en qué archivo tengo que colocar el código?

    Necesito que los usuarios registrados vea una página especifica, pero que el contenido cambie según el usuario. no es la misma información para cada usuario.

    Si me puedes ayudar..
    graciaas!!!

  15. Daniel

    Hola Leandro.
    Todo depende de lo que tengas que hacer. Puedes utilizar el archivo “functions.php” o bien escribir el código directamente en las plantillas.

    Lo del contenido diferente para cada usuario registrado se podría hacer simplemente con páginas protegidas por contraseña (una para cada usuario). Esta sería la manera “nativa” y más simple de conseguir lo que comentas.

    O si no es mucho contenido, también podrías hacerlo con condicionales (como se explica en el artículo), separando por ID de usuario, por nombre, por rol… según lo que convenga.

    Si quieres hacerlo así, yo empezaría con algo simple, por ejemplo saludar a cada usuario por su nombre en “sidebar.php” (como en el ejemplo), y a partir de ahí, ir ampliando la funcionalidad.

  16. Leandro

    Hola Daniel.. Primero que nada Gracias.

    A ver, te explico un poco lo que necesito. tengo una web donde tengo 5 clientes específicos que cada uno van a tener un usuario y contraseña, cada vez que cada usuario entre con su loging me redireccione a una pagina que se llame “Área de Clientes”. pero cada cliente va a observar el contenido de esa pagina diferente, porque es un contenido privado y diferente para cada usuario.

    También me dices la opción de proteger una pagina con una clave para cada usuario, pero como haría para que cuando cada usuario diferente haga el loging, se redireccione a cada pagina que corresponde..

    espero me entiendas y me ayudes con esto.

    Porque de verdad intenté hacer colocando el código en funcion.php o en siderbar.php y de verdad no lo logré.

    y una vez más, gracias por tu competencia y ayuda.

    Saludos!

  17. Camilo

    Hola, muy buen post!
    Quería saber si es posible, que cuando un usuario se va a registrar en mi página de wordpress, yo le de la opción de elegir entre varias opciones, por ejemplo, que indique su país, o su ciudad.
    Y luego, dependiendo lo que este elija, le muestro las distintas cosas que quiero.
    Y si puedo, también, luego contar cuanta gente hay de cada ciudad registrada en el sistema?

  18. Daniel

    Gracias Camilo. Hay varios plugins que te pueden servir para personalizar la página de registro de usuarios de WordPress.

    Por ejemplo, “Theme my login” es un plugin muy completo que permite configurar muchos aspectos del login, como la redirección tras el registro:
    http://www.jfarthing.com/development/theme-my-login/

    Este otro plugin “Front End Registration and Login Forms Plugin” creo que es más sencillo, pero te da la posibilidad de añadir campos nuevos como nombre, apellidos, verificación de contraseña, etc.
    http://pippinsplugins.com/front-end-registration-and-login-forms-plugins/

  19. Daniel

    @ Leandro: para el tema de redireccionar a cada usuario a una página diferente cuando se conecta, podría servirte la información que acabo de publicar en esta entrada:
    http://www.danielnabil.com/blog/redireccion-usuarios-registro-wordpress/

  20. Lorena

    Hola. A ver si alguien me puede ayudar.

    Quisiera saber si en wordpress existe algún plugin o código que permita el acceso de diferentes perfiles a determinadas secciones (por ejemplo el usuario 1 pueda acceder y modificar las páginas 1, 2 y 3. El usuario 2, a las páginas 4, 5 y 6). Es decir, que solo puedan tener y modificar los contenidos que yo, como administradora, le asigne.

    Nota: soy novata en sto de wordpress. Anteriormnt, he realizado algunas webs, pero escribiendo el código manualmnt. Así q intentar entender wp, me stá costando bastante!!!!

    Mil graciassss y agradeceria un montón tu ayuda, pq stoy bastante desesperada!!!

  21. Daniel

    Hola Lorena. Para lo que comentas tal vez no necesites ningún plugin. Lo más fácil sería utilizar los perfiles de usuario de WordPress.

    El rol de AUTOR está por debajo del de Administrador y el de Editor, y solo permite publicar y gestionar sus propias entradas.

    Por ejemplo, tú como administrador podrías crear el contenido, y después cambiar el autor y asignar cada entrada al usuario correspondiente.

    Así cada uno de tus autores solo podría editar el contenido que le ha sido asignado, y no podría editar los contenidos de los demás.

    Si esto no es suficiente, hay plugins para tener más control sobre la gestión de permisos y usuarios, aunque según las necesidades, pueden resultar bastante complejos. Por ejempo:

    http://wordpress.org/plugins/members/
    http://wordpress.org/plugins/role-scoper/

  22. Marcelo

    Necesito ayuda, hago modificaciones a mi página como administrador y todo bien, veo los cambios perfecto, ahora cuando cierro sesion y voy a la pagina antes mencionada los cambios no se reflejan. Que puede ser?

  23. Daniel

    Hola Marcelo.
    Pues pueden ser varias cosas. Por ejemplo, que haya algún plugin de caché instalado que convierte las páginas en estáticas, para ahorrar recursos, pero solo para los usuarios no conectados.

    Esto explicaría que cuando entras como administrador ves las páginas actualizadas y cuando te desconectas no.

  24. lianet

    Hola daniel yo quisiera saber como con esta funcion current_user_can yo puedo por ejemplo crear un menu lateral en el sidebar_rigth para determinanos roles y donde es que programo eso, gracias te lo voy a agradecer

  25. Daniel

    Podrías añadir condicionales con “current_user_can()” directamente en la plantilla del sidebar. Por ejemplo:

    <?php
    
    if ( current_user_can('manage_options') ) {
    
    	/*
    	Contenido disponible solo para administradores y usuarios
    	con permisos para editar los ajustes de WordPress.
    	*/
    
    } elseif ( current_user_can('edit_pages') ) {
    
    	/*
    	Contenido solo disponible para administradores, editores
    	y usuarios con capacidad para editar las páginas.
    	*/
    
    } elseif ( current_user_can('publish_posts') ) {
    
    	/*
    	Contenido solo disponible para administradores, editores,
    	autores y usuarios con capacidad para publicar entradas.
    	*/
    
    } elseif ( current_user_can('edit_posts') ) {
    
    	/*
    	Contenido exclusivo para administradores, editores,
    	autores, colaboradores y usuarios con capacidad para
    	editar entradas.
    	*/
    
    } elseif ( current_user_can('read') ) {
    
    	/*
    	Contenido exclusivo para administradores, editores, autores,
    	colaboradores, suscriptores y usuarios con capacidad para
    	leer páginas y entradas.
    	*/
    
    } else {
    
    	/*
    	Contenido para el resto de usuarios que no tienen cuenta
    	o no han iniciado sesión.
    	*/
    
    }
    
    ?>
    
  26. Mauro

    Hola Daniel, excelente post, me gustaría que me ayudaras con una duda, necesito ingresar contenido variable según el usuario que me visita, voy a enviar mails a mi base de datos de clientes y en la url podría colocar la información de cada usuario (?name=pedro&…) tienes idea de cómo puedo hacerlo?

    muchas gracias por tu atención

  27. Daniel

    Muchas gracias Mauro. Lo que comentas tal vez se podría solucionar pasando el nombre de usuario como parámetro GET (/?name=usuario) y después añadiendo un condicional que redirija a una dirección diferente según ese nombre. Algo así:

    <?php
    // Redirección de páginas utilizando parámetros GET en la URL
    // Utilización: http://www.ejemplo.com/?name=daniel
    
    // Guardamos el nombre del usuario en una variable
    $nombre_de_usuario = htmlspecialchars($_GET["name"]);
    
    // Condicionales
    if ( $nombre_de_usuario == "daniel" ) {
    
    	// Si el usuario se llama "daniel"
    	// redirigimos a esta dirección:
    	header( 'Location: http://www.ejemplo.com/daniel/' );
    	exit();
    
    } elseif ( $nombre_de_usuario == "susana" ) {
    
    	// Si el usuario se llama "susana"
    	// redirigimos a esta otra dirección:
    	header( 'Location: http://www.ejemplo.com/susana/' );
    	exit();
    
    }
    ?>
    
  28. josefina

    Hola Daniel estoy haciendo un portal el cual quiero que en la página de inicio pida usuario y contraseña y una vez registrado solo enseñe las fotos de ese usuario , me puedes decir como hacer?.Tendría que añadir esos usuarios en mi WordPress? Como pongo la página que si pueden ver? Espero tu respuesta ya que estoy un poco perdida con WordPress .Gracias

  29. Daniel

    Hola Josefina. Algo así podría servir para empezar. Luego podrías hacerlo más dinámico, para que mostrara automáticamente la página o entrada correspondiente a cada usuario:

    <?php
    $user_id = get_current_user_id();
    
    // Si el usuario está registrado
    if ( is_user_logged_in() ) {
    
        // Para el usuario con ID = 1 (por defecto, el administrador)
        if ( 1 == $user_id ) {
    
    		// Mostramos el contenido de la página o entrada con ID = 10
    		$user_page = get_post(10);
    		$user_content = $user_page->post_content;
    		echo $user_content;
    
    	// Para el usuario con ID = 2
        } elseif ( 2 == $user_id ) {
    
    		// Mostramos el contenido de la página o entrada con ID = 25
    		$user_page = get_post(25); 
    		$user_content = $user_page->post_content;
    		echo $user_content;
    
    	}
    
    // Si el usuario no está registrado
    } else {
    
    	// Mostamos el formulario de acceso
    	wp_login_form();
    
    }
    ?>
    
  30. Jose Vicente

    Hola Daniel, muchas gracias por el artículo. Te agradecería aún más si me pudieras terminar de orientar:

    La web que tengo que desarrollar para un cliente será de acceso restringido para uso interno de sus trabajadores. Tendrá varias secciones, y la idea es que ahí sus trabajadores inicien sesión y puedan acceder a una serie de archivos para su descarga.

    El handicap viene en que dependiendo del puesto del trabajador, al entrar en una sección “x”, se le deberá mostrar unos archivos en concreto y ocultársele los demás.

    Si he entendido bien, creo que lo que tengo que hacer es crear roles para cada grupo de trabajadores. Digamos que para el “grupo A” (que en este caso representaría un puesto con diferentes empleados en esa empresa) creo un rol, y cualquier usuario que tenga el rol de ese grupo A, al entrar a determinada sección, solo se le mostrarán los archivos para los cuales tenga permiso.

    Para crear roles lo explicas muy bien. Pero cómo sería para que luego, el administrador, a la hora de subir un nuevo archivo (para su posterior descarga), pueda marcarle con uno o varios checkboxs los grupos para los cuales debe ser visible ese archivo. Si no marcas los checkbox de determinados grupos, a ellos no se les mostrará.

    Como supongo sea algo que te lleve un tiempo, agradecería que primero me pases por inbox un presupuesto y si finalmente te animas a hacerlo yo encantado de que luego lo compartas aquí con los demás, al margen de los honorarios que consideres cobrar por el trabajo.

    Valoro mucho a las personas que como tú comparten su conocimiento y ayudan a los demás y veo más que justo que cuando se trata ya de trabajos profesionales en los que uno cobra por ello, dar parte a quien ayuda.

    Muchas gracias de antemano.
    Saludos cordiales,
    José Vicente R.

  31. Jose Vicente

    Hola de nuevo,
    hemos encontrado un plugin bastante bueno para la gestión de archivos, en donde permite poner la visibilidad en función del rol del usuario (Editor, Suscriptor, etc. ), por lo que supongo que con este plugin y tu explicación para crear nuevos roles esté ya solucionado el asunto. Por si alguien quiere curiosear el plugin es este: wpdownloadmanager.com

    Probaremos y de todos modos te guardo en favoritos ya que me ha gustado mucho como explicas así que muy probablemente tarde o temprano te pida presupuesto para alguna cosa.

    Gracias y saludos!
    JV

  32. Daniel

    Hola Jose Vicente.
    Muchas gracias por tus comentarios. Sí, tal vez en el caso que explicas sea mejor utilizar un plugin para gestionar la parte más complicada, y después retocar los detalles a mano.

  33. Jose Lazo

    Hola Daniel,
    Excelente artículo. Me estoy peleando con el código y sus condicionales, pero se me escapa algo.
    Quiero poder mostrar la página de inicio y las del blog a cualquier usuario, pero todas las demás sólo a los registrados (es un buddypress).

    ¿Puedo bloquear con condicionales todas las páginas que en su url tengan “www.loquesea.com/usuarios”, “www.loquesea.com/grupos”, “www.loquesea.com/actividad”, etc?? Lo hago una por una o existe una función para poder hacerlo en el function.php?

    Gracias por la ayuda por adelantado

  34. Daniel

    Hola Jose.
    Muchas gracias.

    Si las partes de la web accesibles a cualquiera son menos que las partes cerradas, lo haría al revés: un condicional con negaciones: si NO es la página de inicio, NI la categoría ‘Blog’, NI una entrada del blog, mostramos el contenido normal, y en caso contrario, un aviso y el formulario de registro, por ejemplo. Así no habría que modificar el código cada vez que se añade una sección cerrada al público.

    Podrías incluir algo así en la plantilla de las páginas, por ejemplo, o en “header.php”, para que afecte a toda la web:

    <?php
    
    // Si no es la página de inicio, ni el archivo de entradas del blog (cambiar ID),
    // ni una entrada guardada en la categoría 'blog' (cambiar ID)...
    if ( !is_home() && !is_front_page() && !is_category('1') && !in_category('1') ) :
    
    	// Si el usuario está registrado como suscriptor
    	// o con cualquier otro nivel con más privilegios...
    	if ( current_user_can('read') ) :
    
    		// Contenido solo visible para usuarios registrados
    		echo 'Bienvenido...';
    
    	// El usuario no está registrado o no se ha conectado con su cuenta
    	else :
    
    		echo 'Lo sentimos. Para ver esta página necesitas registrarte';
    		wp_register(); // Enviamos al formulario de registro
    
    	// Final del condicional de usuarios
    	endif;
    
    // En caso contrario (página de inicio, archivo o entradas del blog)
    else :
    
    	// Contenido abierto a todas las visitas
    
    // Final del condicional de plantillas
    endif;
    
    ?>
    
  35. mariana

    Hola Daniel, te hago una consulta. estoy haciendo una pag web en wp para una inmobiliaria y quiero que el cliente que va a ir cargando las nuevas propiedades solo tenga acceso a agregar propiedades y a ninguna otra pagina, como y donde lo especifico? Muchas gracias

  36. Daniel

    Hola Mariana. Lo suyo sería utilizar alguna extensión que te permita gestionar los permisos de cada tipo de usuario. Por ejemplo, Members: https://wordpress.org/plugins/members/

    Para hacerlo a mano tendrías que crear un nuevo tipo de usuario que solo tenga permisos para editar y publicar entradas, o el tipo de contenido que sea necesario (custom post type).

  37. Tuvant

    Excelente, lo pondré en práctica. Gracias por el artículo.

  38. Primero que todo felicitarlo por el articulo pues a nuestro grupo de trabajo nos ha ayudado bastante. Tenemos una página de logeo el cual es la de wordpress pero la ponemos como página principal y está editada según nuestra imagen. Nuestro problema se basa en que los administradores los redirecciona perfectamente al panel de administración, pero los usuarios con el rol suscriptor o colaborador, no están redireccionando, se queda en la página de loggeo y no redirecciona a la página deseada. Como hacemos para que esos roles se redireccionen bien? (tuvimos un error en la función entonces tuvimos que bajar la página y volver a instalar de nuevo todo, por eso no nos aparece nada en caso de que la visite).

  39. José Pérez

    GRACIAS!!!!!!!!!!! tan sólo con leer lo que otros visitantes preguntaron y lo que tu le has respondido encontré la solución a mis dudas!!

    Gracias Daniel por ayudarnos a los que recién damos los primeros pasos en esto.
    Saludos desde Buenos Aires
    José

  40. Daniel

    Hola William. El tema de redirigir usuarios cuando se conectan está explicado en esta entrada:

    http://www.danielnabil.com/blog/redireccion-usuarios-registro-wordpress/

    Si no funciona, prueba primero lo básico: desactivar plugins, utilizar el theme por defecto, etc. para ver si es algún problema de conflictos.

    Por ejemplo, como se explica en la entrada anterior, la redirección de usuarios no funciona bien con el plugin “Sidebar Login”.

  41. Octavio

    Hola!! Está excelente la información y tu forma de explicarla es bastante entendible, pero siempre voy a tener dudas.

    Lo que me quema la cabeza es la idea de crear una intranet especial, usando obviamente wordpress (me encanta), pero teniendo esta situación de ejemplo:

    El admin sería el nivel más alto, mientras que otros niveles serían inferiores pero con otros privilegios menores que el admin. Bien.

    Un usuario arrancaría en el nivel 0 que es lo más bajo, ¿cómo hago que las páginas para ese nivel sólo las pueda leer ese nivel? ¿Cómo lo asciendo después a un nivel más alto, pero sin acceder a las páginas del nivel que antes estaba siendo parte?

    Otra cosa: el usuario de nivel 0, sólo podría hacer determinadas cosas mínimas en esas páginas, y cumpliendo diferentes tareas, podría obtener (supongamos) puntos para calificar al siguiente nivel en forma automática (y que el moderador o el admin no tengan que encargarse de ascenderlo en forma manual a las 3 de la mañana, por ejemplo xD ).

    Aparte, el usuario 0 debería poder publicar, por ejemplo, archivos y bajarlos también.

    Lo fundamental de un intranet es que cada nivel tenga acceso a las páginas solamente del nivel que le corresponde, pero si un usuario de nivel 0 intenta ver una página de nivel más alto sin tener los privilegios, le debería saltar un aviso de error.

    Además, ¿es posible agregar un sistema interno de correo electrónico en wordpress? Algo así como comunicación interna entre los usuarios de la intranet. Si hay un plugin que me puedas recomendar, bienvenido sea.

    Otra duda: ¿en WordPress es posible crear muchos niveles y a cada nivel, crearles habilidades personalizadas (capabilities)? ¿Se puede elevar el número de nivel del admin?

    La duda que tengo (porque no sé mucho, soy novato todavía sobre código wordpress, no tengo mucha experiencia y me da miedo mandarme un desastre que resulte irreparable, me ha pasado una vez) es si crear habilidades personalizadas es ilimitado, o sea, si se puede crear cualquier cosa, no sé qué límites tiene WordPress a la hora de crear esas cosas, ponele de ejemplo:

    Usuario de nivel 22 sólo puede escribir en x páginas, ver las páginas de su nivel, enviar correo, bajar archivos que corresponden a su nivel, no comentar, imprimir determinados archivos pero no otros, o no poder bajar los archivos sino leerlos online.

    Interesante: ¿se puede hacer que el usuario de cierto nivel sólo pueda acceder a determinados archivos y no a otros de otros niveles?

    Estas dudas van con la idea de intranet (pero puede terminar siendo para cualquier otro proyecto semejante) pero en otro momento, si tengo otras dudas espero me permitas abusar otro poco de tu amable paciencia xD.

    Un saludo enorme y espero tus consejos!

  42. Kelly

    Hola, he leido el articulo de ocultar video de youtube. Cual es el codigo editable, he visto muchos pero no se cual es. Es para mi pagina web de videos de musica de youtube. Desde ya gracias por responderme.

  43. Daniel

    Hola Kelly.
    Cualquiera de los ejemplos te sirve para ocultar lo que quieras, sean vídeos de Youtube o cualquier otro contenido.

  44. kelly

    Gracias por responderme Daniel. Aún no he sido capaz de ocultar video de Youtube, soy usuario de Jimdo.

  45. joseph

    Hola, buen post, una consulta, soy nuevo en estas artes, un cliente me ha pedido que agregue unos plugins y apariencia a su sitio web en en wp pero sucede que su anterior diseñador a ocultado los links Plugins y apariencia del menu de administrador, incluso veo que ha ocultado tambien varias opciones de pantalla. Que debo hacer o existe alguna forma para hacerlo visible? ingrese un plugin a traves de ftp pero no se muestra en el panel y por tal no existe tampoco forma de activarlo . Alguien tiene alguna idea de que hacer o que harian en mi caso. saludos

  46. Daniel

    Hola Joseph.
    En ese caso, yo intentaría hablar con el diseñador de la web. Si ha ocultado el acceso a la gestión de plugins será por alguna razón.

    De todas formas, si la cuenta tiene permisos suficientes, la página de plugins está en:

    http://www.ejemplo.com/wp-admin/plugins.php

  47. Claudio

    Hola Daniel, necesito realizar lo siguiente y no se si se puede hacer y de poder hacerlo no se como.
    Estoy armando un blog a un cliente, y este no debe tener acceso a ciertas partes como por ejemplo, edición de themes, o instalar plugins, etc. para evitar que pueda realizar alguna macana.
    Por lo que solo yo voy a tener el rol de administrador con todas las capacidades.

    Necesito crear un rol, que podria llamarse gerencial (es indistinto), al cual solo le voy a sacar las funciones a las que no quiero que acceda. Hasta aca viene facil, ahora este rol que voy a crear (“el gerencial”), debe poder agregar nuevos usuarios, borrarlos o editarlos, pero… y aca empiezan los peros…, no debe aparecer en el listado desplegable de roles el de administrador, ya que este rol es solo para mi uso. Pueden y deben aparecer cualquiera de los otros roles que existen en wordpress o alguno nuevo que se vaya a crear, pero no debe aparecer el de administrador.
    También este rol nuevo (“el gerencial”), debe poder tener la capacidad de listar los usuarios, pero en dicho listado no debo aparecer yo, o sea el único administrador que va a existir en el blog. Este cliente mio debe al acceder al listado de usuarios ver a todos inclusive a él, pero a mi no, yo debo estar invisible ante sus ojos.
    Te agradezco desde ya tu tiempo.

  48. Daniel

    Hola Claudio.
    No entiendo muy bien por qué hay que complicarlo tanto, pero lo suyo sería utilizar un plugin como Members, que te permite editar los privilegios de cada tipo de usuario e incluso crear nuevos roles con permisos a medida:
    https://wordpress.org/plugins/members/

  49. Claudio

    Hola Daniel, gracias por tu respuesta. He probado el plugin Members, pero si bien puedo crear nuevos roles a los que determino que capacidades van a tener, no puedo ajustar o limitar esas capacidades. He creado un rol nuevo el cual tiene la capacidad list_users, pero al probarlo, me lista todos los usuarios que existen incluyendo al administrador. Y lo que neecsito es que al lisra los usuarios, liste todos menos al usuario administrador, este debe permanecer oculto para el rol que he creado.
    Vi también que el plugin Members, pareciera permitir crear nuevas capacidades, he creado una (listado_usuario), y aparece en el listado de capacidades para dar a un rol, pero esta capacidad que he creado esta vacia ya que no he sabido como determinar que esta nueva capacidad que cree, liste todos los usuarios menos el administrador.
    Sigo con el mismo problema.

  50. Daniel

    Tal vez lo más fácil sería ocultar los usuarios que no quieres mostrar con CSS. Por ejemplo, con esta regla puedes ocultar el usuario con ID = 1, que suele ser el administrador:

    .wp-admin.users-php #user-1 { display: none; }

  51. Alejandra

    Hola Daniel,

    Tengo una duda ¿Se puede ocultar cierta información de una entrada o página de wordpress dependiendo el tipo de usuario? Por ejemplo una imagen o algún texto. Si es posible me podrías explicar como se hace .
    Te lo agradecería.

  52. Daniel

    Hola Alejandra.
    Para lo que comentas, tal vez lo mejor sería utilizar un plugin especializado como este, que utiliza shortcodes para ocultar partes del contenido y te permite especificar bastantes opciones. Por ejemplo:

    – Ocultar para todo el mundo
    – Para todos, excepto para un usuario determinado
    – Sólo para usuarios conectados (o no conectados)
    – Sólo para uno o varios roles específicos (por ejemplo: suscriptor y colaborador)
    – Para un usuario específico con un nombre de usuario, ID o email determinados

    Hide This: https://wordpress.org/plugins/hide-this/

  53. brandon

    Buenas Daniel, buen articulo, pero tengo unas dudas, en el caso que lo que quiera modificar sea por ejemplo que la barra de búsqueda sea diferente y el footer también, quitar algunos dropdown o contenido por el estilo, como podría hacer?? Gracias de antemano

  54. Daniel

    Hola Brandon.
    Cualquiera de los condicionales que se han comentado en esta página te sirve para mostrar información de manera dinámica en cualquier plantilla (footer, header, sidebar…) o elemento (desplegables, caja de búsquedas, widgets, menús, etc).

    Lo primero que hay que decidir es cómo organizar el contenido (según el usuario, el perfil, capacidades, si está conectado o no, etc.) y después crear un bloque condicional (if … else) que incluya las dos (o más) posibilidades.

    Por ejemplo, si quisiéramos mostrar el pié de página (footer) sólo a los usuarios registrados, podríamos hacerlo así:

    if ( is_user_logged_in() ) {
         get_footer();
    } 
    
  55. Angel

    Hola. He llegado a tu post siguiendo una idea que tengo pero que no tengo muy claro cómo hacerla.

    Te explico la idea inicial: en una pagina me gustaría que aparecieran varios cuadros de dialogo que funcionaran a modo de password. Quiero que al escribir sobre ellos un conjunto concreto de palabras se desbloquee una parte de la pagina, ya sea un texto, un vídeo, un link o cualquier cosa que hubiera incrustado. Seria de la misma forma que funciona la función de colapsar una parte de la pagina y que al darle a un botón se expandiera, pero que en lugar de tener que pulsar, que hubiera que escribir un password.

    Debido a mi desconocimiento y pensando en opciones para llevar esto a cabo, se me ha ocurrido la opción de crear usuarios diferentes en un wordpress en donde cada usuario solo tendría acceso a una parte más la parte anterior. Me explico. El usuario 1 solo tendría acceso a A, el 2 a A y B, el 3 a A, B y C…
    La intención es que el usuario 1 no pudiera ver absolutamente nada de B ni C (ya no solo modificar, sino que ni pueda saber de su existencia), que el 2 no pueda saber nada de C, pero si de A y B…
    ¿es esto posible con lo que se explica en esta página?

    ¿sabrias decirme cómo conseguir la idea inicial? (que seria lo preferible)

    muchas gracias de antemano, se que he escrito un tocho importante…

  56. Carlos

    Buenos días Daniel, enhorabuena por tu post.
    Tengo el siguiente problema:
    Necesito que cuando un usuario acceda a mi web solo tenga acceso para modificar o borrar a las fotografías que ha subido y no a las de todo el mundo.
    Espero tus comentarios.
    Muchas gracias.

  57. Claudio

    Hola Daniel, estoy nuevamente por aquí con una nueva inquietud. Necesito eliminar de las opciones de archivos a subir a WordPress, los archivos de video y de audio. La razón es que no quiero que suban estos archivos por su peso que luego se transforman en devoradores de transferencia de banda, por lo que como opción tendran la de linquear videos de youtube o vimeo.

    Al no saber como eliminar esas opciones de archivos, probe de disminuir el limite de tamaño de archivos a subir de 20 MB a 2MB, ya que un video de ese tañano no es nada, y para las imágenes es mas que suficiente. Modifique los archivos .htaccess, php.ini y template.php, de acuerdo a lo que encontre por la web, siguiendo las instruciones y nada, el limite sigue siendo de 20MB.

    Me podrás dar una mano en ambas cuestiones? Limitar el tamaño de archivos a subir a 2MB y eliminar las opciones de video y audio en archivos a subir.
    Gracias

  58. Daniel

    Hola Claudio.
    Para limitar los tipos de archivos que permites subir desde WordPress puedes utilizar esta función:

    function restrict_mime( $mimes ) { 
    	$mimes = array( 
    		'jpg|jpeg|jpe' => 'image/jpeg', 
    		'gif' => 'image/gif', 
    		'pdf' => 'application/pdf'
    	);
    	return $mimes;
    }
    add_filter( 'upload_mimes', 'restrict_mime' ); 
    

    En este caso, lo que hacemos es permitir sólo imágenes JPG, GIF y también PDFs.

    Aquí encontrarás más información:
    https://codex.wordpress.org/Plugin_API/Filter_Reference/upload_mimes

    Y aquí tienes algunas ideas sobre cómo limitar el tamaño de las imágenes que se suben a WordPress.

  59. Daniel

    Nueva entrada con más información sobre este tema:
    Cómo limitar o añadir tipos de archivo y extensiones permitidas en WordPress

  60. Claudio

    Hola Daniel, mira yo estoy armando un sitio y necesito saber si exise algún plugin de area privada pero para cada usuario, te explico; yo hago cobranzas y tengo que decirle a un usuario por ejemplo Juan Perez, hoy cobramos a tus clientes $ 450 y a otro usuario decirle $ 300, seria que tengo que mostrar a cada usuario o cliente mio diferente información, podes ayudarme con esto? Tiene que ser wordpress y simple porque no se programar. Gracias!

  61. Daniel

    Hola Claudio.
    La manera más simple de hacerlo sería utilizando páginas o entradas protegidas con contraseña. Podrías crear una página para cada cliente, y como el contenido no es accesible para el resto de visitas, puedes mostrar información privada sin tener que depender de ningún plugin o funcionalidad más compleja.

  62. virginia

    Hola Daniel, sabes que he tratado de implementar algun codigo para que , cuando el usuario ya esta conectado, no pueda ver los formularios de registro o login, ni acceder a ellos mediante link directo, he tratado con este codigo

    pero no me funciona, me da un monton de errores, tambien intente un codigo parecido pero que cuando el usuario conectado intenta acceder a wp-login.php o wp-register.php que se redireccione al home, pero me genera un loop infinito de redirecciones, tendras alguna sugerencia para mi?

    desde ya muchas gracias y te felicito por tu trabajo

  63. Nilo

    Hola Daniel,
    Veo que aun tengo mucho que aprender y gracias a la forma como explicas y de la forma como programas creo que podría atreverme a preguntarte.

    Tengo una página (A) creada por un amigo que está toda en PHP en donde muestro algunos productos que ofrezco.

    Luego tengo uns pagina (B) en wordpress donde escribo las características de los productos que ofrezco y a través de los presento en los productos en la pagina (A).

    Mi problema es que no se como hacer para:
    Crear páginas con material textual de otras personas y darle a ellos los roles de Author, para que modifiquen o puedan crear nuevos textos o subir imagenes. He utilizado los roles que vienen por defecto en WordPress, pero no me funcionan con lo que quiero ya que:

    1) Cuando el autor entra en su página y abre sección para modificar datos, automáticamente entra en el escritorio de WordPress y puede ver todas las otras páginas que yo he creado, además puede ver las galerías y en defecto todo lo que el escritorio ofrece, yo solo quiero que el vea la página que se creó para él y que la pueda modificar.

    Mi pregunta es cómo hago o qué plugin instalo para que cuando el autor ingrese a través del login, él solo vea su página y pueda modificar sólo la página o el contenido que se le ha asignado y nada más.

    Espero puedas entender mi pregunta.

    De antemano un millón de gracias por tu ayuda.

  64. Daniel

    Hola Nilo.
    El tipo de usuario que necesitas es Autor (que sólo puede publicar y editar sus propias entradas). Si quieres que sólo pueda escribir y editar entradas sin posibilidad de publicarlas, tendrías que usar el tipo Colaborador. Ten en cuenta que aunque estos usuarios puedan ver entradas publicadas por otros usuarios, no tienen privilegios para modificarlas.

    No conozco ningún plugin que haga exactamente lo que dices (que ni siquiera puedan ver el resto de contenidos publicados por otros usuarios).

  65. Nilo

    Hola Daniel,
    muchas gracias por tu respuesta, se que hay una forma de desactivar el Dashboard para que cuando entre un miembro registrado “Ejemplo Autor” no pueda ver el dashboard y solo pueda entrar a la pagina que le fue asignada.

    Seguiré buscando y cuando la consiga te aviso, para que la unas a tu portafolio de soluciones.

    Saludos
    Nilo

  66. Kristian

    Hola, tengo una duda al respecto. Quiero hacer que un usuario (el que yo elija) no vea la publicidad de la página, mientras que los no registrados, si. Sabes como podria hacer eso?
    Desde ya, muchas gracias

  67. Daniel

    Hola Kristian.
    En ese caso deberías añadir condicionales en cada bloque de publicidad para poder diferenciar entre los usuarios que ven la publicidad y los que no. Bastaría utilizar alguno de los ejemplos que hay más arriba, en la sección “Mostrar u ocultar contenidos según el nombre o ID de cada usuario”.

  68. Marta

    Buenos días Daniel.
    Tengo un wordpress con buddypress. Los usuarios tienen que registrarse en el blog para recibir los nuevos post. Perfecto! Pero como puedo hacer para que todos los usuarios de buddypress reciban en su email las novedades que se van introduciendo. Veo que sólo les llega a los suscritos al blog.
    Gracias.

  69. Dymar

    Hola Daniel, yo quisiera saber como hago para mostrar contenido (o no mostrarlo) a usuarios según el país, por ejemplo que cuando sea un usuario de Venezuela vea una imagen y cuando sea de Panamá vea otra, o que según el país puedan ver la cuenta de twitter respectiva.

    He buscado en los plugins y en la documentación pero no consigo como resolverlo.

    Gracias!

  70. Carmen

    Hola Daniel. ¿Conoces algún plugin que haga TODA la web (hecha en wordpress) privada? No quiero poner zonas restringidas, sino que accedan a la web con una contraseña.

  71. Daniel

    Hola Carmen.
    Aquí tienes varias soluciones (mira al final de la entrada, en la sección “Proteger con contraseña una web completa”):

    Cómo proteger entradas o páginas con contraseña en WordPress

  72. Daniel

    Hola Dymar.
    Tal vez este plugin te sirva para mostrar y ocultar contenido según el país del visitante:

    Custom Content by Country

  73. Diego

    Hola Daniel, necesito tu ayuda porque quiero implementar en mi wp un inicio de usuario con contraseña para que pueda descargarse la factura electronica de la escuela de su hijo y la pueda pagar, imprimir, etc.
    El tema es que son 500 familias y a cada una le corresponde una factura por mes.
    Que me recomiedas que use, algun plugin?
    Gracias de antemano.

  74. Antonio Benavides

    Buenos días Daniel; lo primero agradecerte el blog, creo que es bastante útil y más para los profanos en el tema. Nos están desarrollando un periódico digital y precisaríamos tener dentro de los roles asignados (autor, editor, …) lo más limitada posible la información, ya no solo para editar sino también para ver la información referente a visitas… De forma que un autor o editor además de sólo poder publicar en determinadas categorías, ni siquiera pueda ver el resto de publicaciones… Hay algún plugin que nos pueda servir? De momento nos han instalado Resctrict Categories, pero con eso se queda corto para lo que deseamos. Muchas gracias por la info!

  75. Eduard Coy

    Hola Daniel, en primera instancia quiero felicitarte por el post, esta muy bien explicado y se que sera de mucha ayuda para futuros desarrollos. Ya añadi tu web en favoritos.

    Tambien quiero aprovechar para preguntarte dos cosas:

    1. Implemente una plantilla, la cual personalice, pero por algun motivo en los post solo deja hacer comentarios a las peronas que esten logeadas, a los que no estan logeados les aparece “error wordpress Error: Please fill in the required question.” ¿Como crees que pueda resolver el tema?

    2. Sabes depronto como puedo hacer para crear un usuario o un rol que solo tenga permisos para aprobar o desaprobar nuevos usuario?

    Agradezco mucho tu ayuda

  76. Andres J.

    Hola Daniel,

    Un artículo genial. Veo que manejas muy bien el tema. Me gustaría aprovechar para hacerte una pregunta. ¿Hay alguna forma de que estos usuarios puedan subir documentos pero para ser manejados privadamente?

  77. Belen

    Buenas tardes,

    Durante la elaboración de mi página web en joomla me he encontrado con el siguiente problema,:

    Me gustaría que una vez que cada usuario se registrase le apareciese su Logo correspondiente así como un calendario establecido por el administrador de la web.
    Tengo creados los distintos calendarios que corresponden a cada usuario . En mi menú una de las entradas es “mi calendario” cuando un usario inicia sesión en la página de mi calendario me aparecen todos los calendarios que tengo de los diferentes usuarios , como podría hacer para que le apareciese solo el calendario de ese usuario? Con la opción de proteger con contraseña he conseguido que ese usuario no pueda acceder al contenido que hay en los calendarios del resto de usuarios pero no he conseguido que los calendarios (físicamente) no aparezcan si no son del usuario que ha iniciado sesión.
    Podría decirme algún plugin que me facilitase la resolución de este problema?
    Muchas gracias
    Un saludo

  78. Juan

    Hola Daniel, buen post me sirvió mucho, pero tengo una duda, estoy usando el theme my login pero no me esta enviando los correos a la hora de querer registrarme. Tienes idea del problema que pueda tener?

  79. damian

    Muy bueno la informacion que nos brindas
    ando buscando algo asi pero quiero saber si es posible si en mi web a un editor o a un usuario especifico se le puede configurar la pagina de edición, es decir que cuando este creando una entrada ya este seteada o configurada los tag o categoria sin que el lo tenga que hacer asi mismo con otras opciones
    desde ya muchas gracias

  80. luis sanchez

    Hola, quiero saber si puedo mostrar los comentarios del blog solo a usuarios registrados.

  81. Xuliana

    Hola Daniel, cómo estás? Te quiero hacer una consulta sobre Add User, hasta ahora colocaba el nombre y el mail, además de la password 2 veces, y luego enviaba al usuario, pero me desapareció los campos donde ingresar la password, los dos, donde la colocaba por primera vez y donde se repite. Te agradecería alguna sugerencia para solucionar esto, porque no puedo dar de alta a ningún usuario, en lugar de los 2 campos de pasword ahora me aparece la opcion de resetear la pasword, y le envia eso al usuario. Y no encuentro donde se podría cambiar esto. Saludos y mil gracias por toda la ayuda que das!!!

  82. Miguel Ortiz

    Hola amigo tengo un problema, agregue un banner pero solo necesito que se vea en todas las paginas menos la de inicio, ya que haya no alica.

  83. Jose Pablo

    Muy buenas, genial aporte pero falta algo primordial que aun no se ha tocado.

    Si un usuario “XX” ya logueado envía un formulario de lo que sea para una gestión, ¿como logramos que este usuario vea el display de lo que ha introducido sólo el cómo usuario “XX”.

    Por ejemplo en una pagina para poner tickets, el usuario manda una incidencia por un form y luego recibe la respuesta desde admin.

    Ahi el filtro de lo que se mostraría sería segun que usuario, nada tiene que ver el rol.

    Saludos.

  84. María

    Hola Daniel,
    Ahí va mi consulta: gestiono una web en WP y he instalado el plugin “Sociable”. Entonces tengo una serie de iconos de redes sociales que yo he elegido. Sin embargo, estos iconos son para que alguien que entre en la web la comparta en sus redes, y yo lo que quería era poner los iconos para que desde mi web quien la visite linke directamente a mis redes sociales ¿Como hago eso?
    Muchas gracias!

  85. Jose

    María, crea un link a tus redes sociales, puedes hacerlo usando un widget de texto y poniendo en éste el siguiente código:

  86. Albis

    Hola que tal, muy buena pagina, me has ayudado mucho, tengo una pregunta por ejemplo en la parte de mostrar contenido segun el rol del usuario, podria añadir un Shortcode para que solo un determinado rol pudiese ver por ejemplo un enlace, y los de menos rango no puedan verlo, espero haberme explicado, y de verdad excelente web.

  87. Sebastian

    Hola,
    Estuve buscando un plugin que me ayudara a restringir que un colaborador o cualquier role pueda publicar solo en categorías especificas. Si tengo Categorías (A-B-C-D) y que el role Colaborador pueda publicar en (A-D). Lo encontré y lo dejo como recurso por si alguien lo necesita en el futuro.
    https://wordpress.org/plugins/restrict-categories/

    Saludos, desde Colombía.

  88. Luis Padron

    Saludos, mi caso es este, tomo fotos a eventos y bodas, y quisiera tener algo para que cada cliente pueda ver SOLO sus fotos, cada cliente accede con sus claves y ve SOLO sus fotos. Y asi con cada cliente.

    Gracias de ante mano.

  89. Daniel

    Hola Luís.
    Lo más sencillo para el caso que planteas sería crear una entrada o página protegida con contraseña para cada cliente. Otra solución podría ser marcar la entrada o página de cada cliente como privada y crear usuarios para cada uno.

    Cualquiera de estas dos soluciones te permite ocultar el contenido sin tener que instalar ningún plugin ni tema en particular.

  90. Richards

    Quisiera un shortcode que no oculte por usuario si no por rol, o sea quiero tener miembros tipo vip que se les muestre contenido, solo que está encerrado en dicho shortcode.

  91. Lakhmi

    Hola, gracias por el post. Soy novato en programación pero necesito solventar una cosa de CSS. Disculpar si lo pongo aquí por si no es el lugar adecuado.

    Necesito aplicar CSS en una página concreta según el usuario. Actualmente aplico ciertas reglas en la página desde una opción de CSS para esa página a través del plugin. Sin embargo necesito que según el id de usuario o el rol del usuario se apliquen o no esas reglas. Las reglas afectan a quitar el header y el footer para que no sea visible.

    Muchas gracias.

  92. Daniel

    Hola Lakhmi.
    Precisamente el primer ejemplo de esta página sirve para mostrar y ocultar contenido según el nombre de usuario o el ID.

    Puedes incluir reglas CSS directamente en esos condicionales, o bien enlazar con hojas de estilo aparte.

  93. Nelson

    Hola Daniel, como puedo hacer como administrador para regular las paginas que ven los demas usuarios en el backend? Sabes si hay un plugin o manera de hacerlo? Solo necesito que los otros usuarios solo carguen productos y demas cosas pero no modifiquen las paginas ni plugins.

  94. Daniel

    Hola Nelson.
    Para modificar lo que cada tipo de usuario puede ver y hacer, puedes utilizar algún plugin que te ayude a gestionar los permisos. Por ejemplo, Members.

  95. Topacio

    Hola, buenas tardes. Mi nombre es Topacio.
    Quisiera saber si existe un plugin que me ayude a registrar usuarios en mi página y les permita ver a estos usuarios contenidos ocultos de la página sin pedirles una contraseña.

  96. Daniel

    Hola Topacio.
    Creo que el plugin más completo para eso es Restrict Content Pro. Puedes crear diferentes tipos de suscripciones (gratuitas, de pruebas, premium…), enviar emails de bienvenida a los nuevos miembros, etc.

  97. Jesús

    Me has solucionado dos días de trabajo con la función is_home(). Muchas gracias.

  98. Andrés

    Daniel, muchas gracias por tu ayuda. En mi caso, administro una comunidad y necesito que las personas que entren en el sitio vean su boleta de cobranza de gastos comunes con toda la info, nombre, número de depto, un histórico de boletas, etc. Qué plugin me sirve para esto y cómo puedo dividir por depo el historial de sus boletas? Gracias!!

  99. Omar

    Hola estoy haciendo un sitio y tengo la zona de logeo y una zona de registro, el punto es que aunque el usuario ya esta logeado si accede a la zona de registro le aparece todo, no hay manera de detectar si ya esta logeado no pueda ver la zona de registro, etc o algun mensaje de que el ya se encuentra registrado. Esto es para usuarios ya registrados impedir que vean ciertas paginas de mi web. Como podría hacer?

  100. ruth

    Hola buenas, me gustaría saber si es posible crear un área cliente privada pero sin que el usuario se tenga que registrar, es decir, sólo con un código numérico que le aportaría el admin del wordpress.
    Muchas gracias

Y tú qué opinas?

Las URLs se convertirán en enlaces automáticamente. Tu dirección de email no se publicará ni se utilizará para enviar ningún tipo de información. Los mensajes que no aporten nada al tema que se trata en esta entrada se borrarán. Las imágenes que aparecen al lado de cada autor utilizan el servicio de Gravatar. Recuerda que puedes usar etiquetas HTML como <a href>, <code>, <em> o <strong> en los comentarios.

(necesario)

(opcional)