¿Cuál es la forma correcta de obtener el ID del usuario conectado en un plugin?

28 nov 2012, 19:18:12
Vistas: 13.5K
Votos: 0

Necesito obtener el ID del usuario conectado dentro de mi plugin.

¿Es esta la forma correcta?

$root = dirname(dirname(dirname(dirname(__FILE__))));
if (file_exists($root.'/wp-load.php')) {
    require_once($root.'/wp-load.php');
} 
$user_id = get_current_user_id();

Otto menciona que no deberíamos cargar el archivo wp-load.php ya que no sabemos dónde está ubicado y duplica la carga del servidor.

Estoy realmente confundido al respecto.

Y una pregunta más...

Mira esta imagen de Rarst

Según esa imagen, wp-load.php se carga antes que todos los plugins. ¿Entonces por qué los autores de plugins lo incluyen nuevamente?

0
Todas las respuestas a la pregunta 2
3

Usa is_user_logged_in() y wp_get_current_user() (documentación para desarrolladores).

if ( is_user_logged_in() ) {
    // El usuario actual ha iniciado sesión,
    // así que obtengamos la información del usuario actual
    $current_user = wp_get_current_user();
    // ID del usuario
    $user_id = $current_user->ID;
}
28 nov 2012 19:22:51
Comentarios

Gracias. Entonces este plugin está codificado de manera incorrecta, ¿verdad? (líneas 12 - 17)

PrivateUser PrivateUser
28 nov 2012 19:27:49

Esa es realmente una pregunta aparte. Sin profundizar más en ese Plugin, no puedo comentar por qué está cargando wp-load.php. Sin embargo, sí sé que no es necesario para obtener la información del usuario actual.

Chip Bennett Chip Bennett
28 nov 2012 19:29:16

En realidad, es necesario para ese propósito, debido a que está cargando la mayor parte del núcleo de WordPress. Mi suposición es que esta es una parte del plugin que se llama fuera del alcance de WordPress, como una llamada AJAX remota al archivo o algo relacionado con eso, donde no tienes acceso a las funciones de WordPress como get_currentuserinfo. Sin embargo, no es una buena práctica incluir el núcleo de esta manera.

Mario Peshev Mario Peshev
28 nov 2012 19:41:25
1

Si estás dentro de un plugin, WordPress ya está cargado. No necesitas cargarlo tú mismo.

Dentro de cualquier función que necesite el ID de usuario, debes hacer dos cosas:

  1. Hacer global la variable de datos del usuario
  2. Poblar la variable de datos del usuario

Aquí tienes un pseudocódigo:

function alguna_funcion_que_necesite_info_de_usuario() {
    global $current_user;
    get_currentuserinfo();

    // Ahora puedes referenciar $current_user->ID en tu código.
}
28 nov 2012 19:20:35
Comentarios

Para tu información: get_currentuserinfo() está obsoleto desde WordPress 4.5.0. Usa wp_get_current_user() en su lugar. ... más información aquí.

nyedidikeke nyedidikeke
7 jun 2017 11:14:45