¿Cuál es la forma correcta de obtener el ID del usuario conectado en un plugin?
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...
Según esa imagen, wp-load.php se carga antes que todos los plugins. ¿Entonces por qué los autores de plugins lo incluyen nuevamente?

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;
}

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

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.

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.

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:
- Hacer global la variable de datos del usuario
- 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.
}

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í.
