Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Condiciones con Roles de Usuarios

Estas en el tema de Condiciones con Roles de Usuarios en el foro de WordPress en Foros del Web. Muy buenas señores, tengo un problema y haber si entre todos conseguis hecharme un cable... antetodo, Gracias. Les explico, Resulta que tengo un wordpress en ...
  #1 (permalink)  
Antiguo 20/12/2010, 07:04
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Condiciones con Roles de Usuarios

Muy buenas señores, tengo un problema y haber si entre todos conseguis hecharme un cable... antetodo, Gracias.


Les explico, Resulta que tengo un wordpress en el que instalé un plugin de mensajería interna.

En dicho plugin, a la hora de enviar un mensaje, estoy intentando hacer unas condiciones con IF para que dependiendo del tipo de usuario (administrador, suscriptor etc...) Realice una determinada acción o muestre y oculte unos parámetros o listas.

Aquí empieza la miga, he probado con varias configuraciones y bueno, algunas han funcionado pero para un único usuario, cosa que no interesa ya que quiero manejar roles de usuarios y que estén logueados.

Para ello he querido hacer una prueba del siguiente tipo:

Código:
<?php
IF ( ($role="administrator") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Administrador"; }
ELSEIF ( ($role="subscriber") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Suscriptor"; }
ELSEIF ( ($role="contributor") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Contribuidor"; }
ELSEIF ( ($role="author") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Author"; }
ELSEIF ( ($role="editor") == (is_user_logged_in() & $user_ID) ) { ECHO "Hola soy Editor"; }
ELSE { ECHO "se ha producido un error, estamos tratando de solucionarlo"; }
?>
Si entro como Administrador me muestra correctamente "Hola soy Administrador", pero si me logueo como Suscriptor y entro al plugin de Mensajería interna, me sigue apareciendo "Hola soy Administrador".


Me gustaría que funcionara esto ya que me estoy volviendo un poco loco y ya nose que pensar porque he probado con swith, if, diferentes variables de entorno de wordpress, definiendo variables de usuarios y demás y... duplicar código, el cual ha funcionado únicamente si defino la regla para un único usuario en concreto, cosa que como ya he dicho, no interesa ya que quiero manejar roles de usuarios y que estén logueados.


Espero que puedan ayudarme en ésta azaña... y así les sirva a otros usuarios y se eviten un quebradero de cabeza.


Gracias nuevamente y Salu2
  #2 (permalink)  
Antiguo 20/12/2010, 14:48
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

no me parece bien cerrala la sintaxis de ese php pero para "escaparte" con una solucion mas rudimentaria haz:

Código PHP:
<?php IF ( ($role="administrator") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Administrador"; } ELSE { }?>

<?php IF ( ($role="subscriber") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Suscriptor"; } ELSE { }?>

<?php IF ( ($role="contributor") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Contribuidor"; } ELSE { }?>

<?php IF ( ($role="author") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Author"; } ELSE { }?>

<?php IF ( ($role="editor") == (is_user_logged_in() & $user_ID) ) { ECHO "Hola soy Editor"; } ELSE { }?>
total... nadie notara la diferencia... muajaja (risa malefica)


salu2
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #3 (permalink)  
Antiguo 20/12/2010, 15:07
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Condiciones con Roles de Usuarios

Cita:
Iniciado por pleter Ver Mensaje
no me parece bien cerrala la sintaxis de ese php pero para "escaparte" con una solucion mas rudimentaria haz:

Código PHP:
<?php IF ( ($role="administrator") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Administrador"; } ELSE { }?>

<?php IF ( ($role="subscriber") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Suscriptor"; } ELSE { }?>

<?php IF ( ($role="contributor") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Contribuidor"; } ELSE { }?>

<?php IF ( ($role="author") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Author"; } ELSE { }?>

<?php IF ( ($role="editor") == (is_user_logged_in() & $user_ID) ) { ECHO "Hola soy Editor"; } ELSE { }?>
total... nadie notara la diferencia... muajaja (risa malefica)


salu2


Muchísimas Gracias por responder Pleter, bajo ésta respuesta la verdad es que no la he visto muy correcta pero viendo que aquí el único que sabe meterle mano al código es su padre... y tampoco, he ido corriendo a probar y... obtengo resultados que no había obtenido pero siguen siendo desastrosos como los mios.. lástima.


Cuando ingreso como "Administrador" directamente no sale ningún "ECHO".

Lo raro aparece cuando ingreso como un usuario "Suscriptor", ya que el resultado es el siguiente:

"Hola soy Administrador Hola soy Suscriptor Hola soy Contribuidor Hola soy Author Hola soy Editor"

Algo que me ha dejado con cara parecida a la de los siguientes emoticonos:


Total, seguiré probando y a la escucha de vuestras proposiciones, gracias nuevamente por tu respuesta Pleter y también estoy al tanto de otra de tus ideas... ya has conseguido algo que no había visto :D


Salu2
  #4 (permalink)  
Antiguo 20/12/2010, 15:48
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

OPCION 2

Código PHP:
<?php if ( $user_ID ) : ?>
<?php 
switch ($role) {
    case 
"administrador":
        echo 
"Usted es superman!... digo administrador";
        break;
    case 
"subscriber":
        echo 
"Usted es suscriptor";
        break;
    case 
"contributor":
        echo 
"Usted es Contribuidor";
        break;
    case 
"author":
        echo 
"Usted es Autor";
        break;
    case 
"editor":
        echo 
"Usted es editor";
        break;
?>


<?php else : ?>
<p>Ingrese para que le lea el futuro</p>
<?php endif; ?>
p.s.:no se si funcionara el switch pero prueba! (estoy aprendiendo esto de php gracias a tu pregunta jaja ni idea en programación en php, pero me doy maña tratando de pensar como puede funcionar. aunque sea.. pruebalo por favor.
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #5 (permalink)  
Antiguo 20/12/2010, 15:52
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

Cita:
Iniciado por Z3R0N3 Ver Mensaje
Lo raro aparece cuando ingreso como un usuario "Suscriptor", ya que el resultado es el siguiente:

"Hola soy Administrador Hola soy Suscriptor Hola soy Contribuidor Hola soy Author Hola soy Editor"
ahora me se me estrujen los sesos ... eso paso porque se puso ELSE y no un ELSEIF
entonces dice que si es tal cosa haga tal otra y eso tal otro tiene anidado otra cosa que como esta en lo anterior se valida y a su vez tiene anidada otra cosa que como se valida lo muestra y como a su vez .... ufff.. deja vu

YO creo que va a ser mas util la opcion 2 sino intentan con la opcion 1 pero reemplaza el ELSE por el ELSEIF (creería que puede ser eso)
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #6 (permalink)  
Antiguo 21/12/2010, 05:17
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Condiciones con Roles de Usuarios

Cita:
Iniciado por pleter Ver Mensaje
ahora me se me estrujen los sesos ... eso paso porque se puso ELSE y no un ELSEIF
entonces dice que si es tal cosa haga tal otra y eso tal otro tiene anidado otra cosa que como esta en lo anterior se valida y a su vez tiene anidada otra cosa que como se valida lo muestra y como a su vez .... ufff.. deja vu

YO creo que va a ser mas util la opcion 2 sino intentan con la opcion 1 pero reemplaza el ELSE por el ELSEIF (creería que puede ser eso)

Bff parece que el tema está complicado, he seguido tus indicaciones de cambiar los ELSE por ELSEIF pero... no creo que esa opción sea muy acorde y más cuando al probarlo aparece lo siguiente:

Parse error: syntax error, unexpected '{', expecting '(' in \httpdocs\wp-content\plugins\user-messages\view\frontend\WriteMessageView.php on line 125


también pensé en hacerlo así:

Código:
<?php IF ( ($role="administrator") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Administrador"; } ELSEIF { ?>

<?php IF ( ($role="subscriber") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Suscriptor"; } } ELSEIF { ?>

<?php IF ( ($role="contributor") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Contribuidor"; } } ELSEIF { ?>

<?php IF ( ($role="author") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Author"; } } ELSEIF { ?>

<?php IF ( ($role="editor") == (is_user_logged_in() & $user_ID) ) { ECHO "Hola soy Editor"; } } ELSEIF {  ECHO "Hola, no soy nadie..."} ?>

Pero el error sigue siendo el mismo que el anterior, por lo que opté por probar tu opción 2, dando como resultado... NADA! (perdón por las mayusuculas), es decir...no muestra nada de nada...

He de decir que yo probé algo parecido con swith pero no me dió buenos resultados....

Ya me da por pensar que el plugin le aporta al usuario logueado diferentes permisos, es decir, que se machaca los suyos y además le da otros permisos, por ejemplo un usuario "suscriptor" le pasa permisos como "editor"+"suscriptor" o "contribuidor" o algo así porque sino no lo entiendo....


El código que yo hice fué algo parecido a lo siguiente:

Código:
<?php

FUNCTION Froles($roles = null)
{
    switch ($roles) {
        default:
            $roles = null;
        CASE administrator:
			ECHO "Hola soy el Administrador";
			BREAK;
        CASE suscriptor:
			ECHO "Hola soy el Suscriptor";
			BREAK;
        CASE editor:
			ECHO "Hola soy el Editor";
			BREAK;
        CASE contributor:
			ECHO "Hola soy el Contribuidor";
			BREAK;
        CASE author:
			ECHO "Hola soy el Autor";
			BREAK;
    }

}

IF ( $user_ID ) {

IF ( $role="administrator" ) {
	ECHO Froles(administrator); }
ELSEIF ( $role="suscriptor" ) {
	ECHO Froles(suscriptor); }
ELSEIF ( $role="editor" ) {
	ECHO Froles(editor); }
ELSEIF ( $role="contributor" ) {
	ECHO Froles(contributor); }
ELSEIF ( $role="author" ) {
	ECHO Froles(author); }
ELSE { ECHO"no eres ningun usuario";}

} ELSE { ECHO "logueate";}

?>
pero... siempre soy ADMIN! :D


Haber si doy con alguna idea.... por ahora voy probando cosillas pero hay tantos Bugs en éste CMS que... bf, poco a poco haber que tal...


Seguiré a la espera de vuestras respuestas y gracias nuevamente Pleter, tu ayuda al menos me tranquiliza. Salu2 Bro
  #7 (permalink)  
Antiguo 21/12/2010, 09:28
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

perdona por no darte mas ayuda, pero hasta aca llegaron mis sesos...
de todos modos seguire mirando por la web si encuentro algo para ti, no dejare este post.
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #8 (permalink)  
Antiguo 21/12/2010, 11:46
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Respuesta: Condiciones con Roles de Usuarios

Código PHP:
Ver original
  1. $role = "administrator"; // Esto es una asignación
  2. $role == "administrator"; // Es una verificación

Tu siempre haces una asignación por eso siempre te dice que eres administrator.
  #9 (permalink)  
Antiguo 21/12/2010, 13:15
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

bueno, algo nuevo que estoy aprendiendo :P pero tan lejos no estaba! jeje intenta de nuevo con esto
Código PHP:
<?php IF ( ($role=="administrator") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Administrador"; } ELSE { }?>

<?php IF ( ($role=="subscriber") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Suscriptor"; } ELSE { }?>

<?php IF ( ($role=="contributor") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Contribuidor"; } ELSE { }?>

<?php IF ( ($role=="author") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Author"; } ELSE { }?>

<?php IF ( ($role=="editor") == (is_user_logged_in() & $user_ID) ) { ECHO "Hola soy Editor"; } ELSE { }?>
y para adornarlo un poco mas para que en el caso que no este registrado de un mensaje de salida yo iría por lo siguiente

Código PHP:
<?php if ( $user_ID ) : ?>

<?php IF ( ($role=="administrator") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Administrador"; } ELSE { }?>
<?php 
IF ( ($role=="subscriber") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Suscriptor"; } ELSE { }?>
<?php 
IF ( ($role=="contributor") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Contribuidor"; } ELSE { }?>
<?php 
IF ( ($role=="author") == (is_user_logged_in()  & $user_ID) ) { ECHO "Hola soy Author"; } ELSE { }?>
<?php 
IF ( ($role=="editor") == (is_user_logged_in() & $user_ID) ) { ECHO "Hola soy Editor"; } ELSE { }?> 

<?php else : ?>
<p>usted no inicio sección</p>
<?php endif; ?>
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)
  #10 (permalink)  
Antiguo 22/12/2010, 04:56
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Condiciones con Roles de Usuarios

Cita:
Iniciado por TMeister Ver Mensaje
Código PHP:
Ver original
  1. $role = "administrator"; // Esto es una asignación
  2. $role == "administrator"; // Es una verificación

Tu siempre haces una asignación por eso siempre te dice que eres administrator.
Muy Buenas TMeister te agradezco también la ayuda que me ofreces, la verdad es que ese fayo que me comentas... ni había caido! jajaj, muy buena esa :D

Gracias a tu aclaración voy a seguir con ello haber si consigo dar con la solución, aunque por ahora los resultados son los mismos no voy a decaer hasta que lo consiga, gracias nuevamente.


PD: ¿Alguien sabe si en realidad estoy usando las variables y funciones correctas?, es que en realidad ya no se que pensar acerca de éste problema... es algo sencillo y no encuentro la forma de que funcione.

En cuanto a las variables me refiero a " $role ", "$user_ID" y a funciones me refiero a " is_user_logged_in() ", Si existen otras u otras formas de verificar el usuario logueado... haganmelo saber please.


Hola Pleter, Gracias por seguir activo en éste tema, la verdad es que he vuelto a probar tu nuevo código que es similar a la OPCION 1 pero con la modificacion que TMeister propone. El resultado es el mismo, si entro com administrador no me muestra ningún "ECHO", mientras que si me logueo como Suscriptor me aparece lo siguiente:

"Hola soy Administrador Hola soy Suscriptor Hola soy Contribuidor Hola soy Author Hola soy Editor"


Por lo tanto... sigo con ello. Gracias nuevamente Pleter, estaré al tanto de tus respuestas.


PD: también he probado a hacer la modificación de TMeister en el Switch, pero los resultados no varían...


Gracias a ambos y seguiré empeñado en conseguirlo, haber si con vuestra ayuda me encamino hacia lo que quiero. Gracias
  #11 (permalink)  
Antiguo 22/12/2010, 05:52
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

Utiliza WP 3.0.2 en adelante y utiliza esto en el lugar que lo necesites:



Código PHP:
<?php if ( $user_ID ) : ?>
<?php current_user_can
$role ); ?> 
<?php switch ($role) {
    case 
"administrador":
        echo 
"Usted es superman!... digo administrador";
        break;
    case 
"subscriber":
        echo 
"Usted es suscriptor";
        break;
    case 
"contributor":
        echo 
"Usted es Contribuidor";
        break;
    case 
"author":
        echo 
"Usted es Autor";
        break;
    case 
"editor":
        echo 
"Usted es un intento de autor";
        break;
?>


<?php else : ?>
<p>Ingrese para que le lea el futuro</p>
<?php endif; ?>
pero no me imprime resultado, tambien intente:
Código PHP:
<?php current_user_can$rango ); ?> 
<?php 
if($rango=="administrator") {
    echo 
"<p>admin</p>";
}
?>
<?php 
if($rango=="suscriber") {
    echo 
"suscriptor";
}
?>
<?php 
if($rango=="contributor") {
    echo 
"contribuidor";
}
?>
<?php 
if($rango=="author") {
    echo 
"autor";
}
?>
<?php 
if($rango=="editor") {
    echo 
"editor";
}
?>
y tampoco

lo raro es que hago
Código PHP:
<?php current_user_can$rango ); ?> 
<p><?php echo $rango?></p>
y tampoco me lo imprime, y eso que segui la guia oficial de WP aca: http://codex.wordpress.org/Function_...rrent_user_can

p.s.: fíjese la ironía, pero en ese link, hay un ejemplo oficial de WP, y tampoco anda
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)

Última edición por pleter; 22/12/2010 a las 06:14
  #12 (permalink)  
Antiguo 23/12/2010, 06:41
Avatar de Z3R0N3  
Fecha de Ingreso: junio-2010
Ubicación: En algún lugar de la mancha de cuyo nombre no quiero acordarme...
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Condiciones con Roles de Usuarios

LO TENGO!! (perdon por las mayusculas otra vez... :D)

Ante todo Muchísimas gracias Pleter por la insistencia en dar con la solución para mi y el resto de users, al igual que TMeister por su aclaración con la sintaxis.

Si necesitais ayuda en un futuro está claro que podeis contar conmigo. Gracias.


Y ahora viene cuando comparto el código con ustedes y todo el mundo, lo dejo aquí:

Código:
GLOBAL $wp_roles;

FOREACH ( $wp_roles->role_names as $role => $name )
	{
		IF ( current_user_can( $role )) 
			{ $usuarios=$role; }
	}

IF ( ($usuarios == "administrator") & (is_user_logged_in()) ) { ECHO "Hola soy Administrador"; }
ELSEIF ( ($usuarios =="subscriber") & (is_user_logged_in()) ) { ECHO "Hola soy Suscriptor"; }
ELSEIF ( ($usuarios =="contributor") & (is_user_logged_in()) ) { ECHO "Hola soy Contribuidor"; }
ELSEIF ( ($usuarios =="author") & (is_user_logged_in()) ) { ECHO "Hola soy Author"; }
ELSEIF ( ($usuarios=="editor") & (is_user_logged_in()) ) { ECHO "Hola soy Editor"; }
ELSE { ECHO "se ha producido un error, estamos tratando de solucionarlo"; }

Muchísimas Gracias a ambos y espero que les sirva de ayuda, seguimos por el foro.

Salu2
  #13 (permalink)  
Antiguo 23/12/2010, 08:34
 
Fecha de Ingreso: julio-2009
Ubicación: Argentinalandia
Mensajes: 339
Antigüedad: 14 años, 9 meses
Puntos: 15
Respuesta: Condiciones con Roles de Usuarios

gracias a ti por compartir la solucion, valoro mucho eso yo y te has ganado karma para tu perfil :D
salu2
__________________
Mi Perfil y Blog estan en Yeow.com.ar ✰✰✰✰✰
Pero en WONDED.COM estan Mis Proyectos OpenSource ;-)

Etiquetas: condiciones, roles, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:14.