last day (16 days later) » 

1:19 AM
2
Q: Como obtener el id del usuario logeado en wordpress

PatricioEstoy haciendo un script en php y necesito obtener el id del usuario, tengo este codigo: <?php include_once 'wp-config.php'; global $current_user; echo $current_user->ID; ?> Pero me devuelve 0. Alguien sabe que estoy haciendo mal?. Gracias!

 
¿Por qué no lo haces con get_current_user_id(), simplemente así: echo get_current_user_id();. Ver la documentación. No necesitas declarar global ni nada, simplemente invocar la función.
 
Hola Cedano, te comento que igual me devuelve 0. Gracias por tu ayuda!
 
Patricio dice: Return: The current user's ID, or 0 if no user is logged in., o sea, devuelve 0 si no hay ningún usuario logueado. ¿Seguro que hay un usuario logueado?
 
Sisi, estoy logeado y devuelve simplemente 0... nada mas
 
Hagamos esta prueba a ver qué pasa: $current_user = wp_get_current_user(); var_dump($current_user); Comenta lo que devuelve el var_dump.
 
1:19 AM
Devolvio esto: object(WP_User)#9402 (8) { ["data"]=> object(stdClass)#9403 (0) { } ["ID"]=> int(0) ["caps"]=> array(0) { } ["cap_key"]=> NULL ["roles"]=> array(0) { } ["allcaps"]=> array(0) { } ["filter"]=> NULL ["site_id":"WP_User":private]=> int(0) }
 
Da la impresión de que no hay ningún usuario logueado. Esto no falla, dirá la realidad del asunto: if ( is_user_logged_in() ) { echo 'Bienvenido!'; } else { echo 'Nadie logueado, eres un visitante!'; } Prueba ver qué dice.
 
Hola Cedano, me devolvio Nadie logueado, eres un visitante!
Pero si estoy logeado
 
Exacto, entonces no estás logueado
 
lo juro por Dios que si!
jajaja
en una pestaña tengo mi cuenta y en la otra este script
 
No, a no ser que tu versión de WP sea demasiado vieja (anterior a la versión 2), esa función no falla
 
1:21 AM
nop, tengo la....
 
no no, debes probar el script en la pestaña en que está logueado, así no vale, me parece,
debes loguearte y abrir el enlace que te ejecuta ese script
 
4.9.8
ahi puse el link en la pestaña dnd estaba logeado
y fue lo mismo
Nadie logueado, eres un visitante!
vuelvo hacia atras y sigo logeado
 
como te digo, esa función no falla, el problema es que no está reconociendo que estás logueado por algún motivo.
 
entiendo
y cual podria ser ese motivo?
me faltara algun include?
 
Trata de incluir /wp-includes/user.php a ver.
 
1:25 AM
a ver
 
Voy a probar en mi Wordpress y te comento
 
ook
gracias!
no, tampoco
me parece que en esta nueva version de wordpress ya no se puede hacer asi
 
probando...
 
lei por ahi q habia q hacerlo con un add_action
init
ook
 
Me funciona perfectamente, sin ningún include
me dice que estoy logueado
Ahora voy a probar la forma de obtener el id
 
1:30 AM
q version tenes?
xq a mi en el localhost tmb me anda
pero tengo la...
vaya... es la misma
debo haber tocado algo...
 
Lo siento por ti, a mí me funciona perfectamente con esto simplemente: get_current_user_id(), sin includes ni nada de nada.
 
vaya!
 
Otra cosa por la que puede no estar funcionando es que tu script esté fuera del entorno de WP
Revisa el error_log
 
si esta fuera del entorno
por eso hago el include
 
ahhh, entonces vamos a probar fuera del entorno a ver qué pasa
 
1:34 AM
es muy wordpress q tiene algo
porque en localhost anda bien
 
A mi no me funciona fuera del entorno de WP
Pero creo que es por lo que te decía, me parece que no reconoce que haya un usuario logueado en otra pestaña
En cambio el otro código, dentro del entorno de WP me funciona aunque abra varias pestañas
Lo extraño es que quieras usar ese código fuera del entorno de WP. ¿?
En ese caso quizá sea mejor que lo intentes leyendo la tabla usuarios, no sé si tiene algún indicador de usuario logueado
 
indicador de usuarios logeados?
es algo extraño
el mismo script
en localhost anda
en mi host no
 
1:50 AM
Sí, la tabla de usuarios de WP tiene una columna llamada user_status, no sé si sirve para indicar si el usuario está logueado o no. Aunque aún así habría que saber de qué usuario se trata.
El problema, creo yo, es el hecho de estar fuera del entorno de WP. A mi no me funciona en un script colocado fuera de WP, en el hosting
Quizá el localhost el trato sea diferente, pero en el hosting es como si fuera algo totalmente aparte
Como si no reconociera nada de WP y es normal. De hecho en mi dominio yo tengo código que funciona de forma independiente. Para hacer eso debes llamar tu código desde dentro de WP.
 
mmm
y como se haria eso?
 
La cuestión es que dentro de tu WP debe haber un elemento: post o página, que llame a ese código.
Esa llamada se puede hacer mediante un shortcode, o mediante una función personalizada o algo así
O mediante algo que se llama hook
 
claro
 
Lo que pasa es que yo no sé cómo hacerlo en temas de WP normales. Yo tengo un tema de pago y ellos tienen un archivo llamado custom.php que es donde se agregan esas funciones. Realmente en WP con temas normales no sabría cómo hacerlo... creo que es el archivo functions.php pero no estoy seguro.
 
yo tengo tmb un tema de pago
woodmart
lo q estoy haciendo es un sistema de descarga
en dnd compruebo si el usuario tiene los permisos
 
1:58 AM
Ya, pero debes revisar en la documentación de ese tema cómo se agregan las funciones personalizadas y esas cosas
 
pero para eso necesito obtener el id del usuario
 
Yo uso Thesis
 
claro
 
Más que un tema, Thesis es en realidad un framework
 
entiendo
 
1:59 AM
La cuestión es saber, según tu tema, dónde poner algo como esto: `function shortcode_calendario( $atts ) {
return controlar($atts);

}

add_shortcode( 'calendario', 'shortcode_calendario' );`
 
en el function
pero no veo como llamar a eso
 
Con eso yo declaro un shortcode que me ejecuta el código de la funcion shortcode_calendario
 
tendria que aprender un poco mas de eso
 
Y en cualquier post o página al que yo ponga: [calendario] me mostrará lo que esa función devuelve.
 
entiendo
 
2:01 AM
La documentación de tu tema debe explicar cómo personalizar las plantillas o algo así
 
lo voy a buscar
te agradesco mucho por tu ayuda Cedano!
 
Es así como yo puedo enlazar sin problemas código que está fuera del entorno de WP y hacerlo que me funcione como si estuviera dentro de WP
 
claro
 
Yo probé la función así, pasando por custom.php y me funcionó a la perfección. Pero poniendo el código en un archivo PHP fuera de WP no me funcionó, por eso mismo, porque ese archivo no pasa por WP.
 
te agradesco mucho por tu ayuda!
voy a seguir dandole vueltas
 
2:04 AM
De nada, espero que puedas resolverlo.
 
t mando un fuerte abrazo!
 
2:29 AM
¡Encontré una forma de hacerlo!
Tienes que hacer require de wp-load y luego podrás usar las funciones de WP
Por ejemplo: require ('wp-load.php'); y luego: get_current_user_id();
En el require debes poner la ruta exacta de wp-load claro está.
 

  last day (16 days later) »