El resultado actual es "Error fatal de PHP: Llamada a la función indefinida wp_get_current_user ()" que tiene sentido, pero no ayuda.
Necesito usar $ current_user.
Aquí está el código que estoy usando actualmente:
$wp->init();
do_action( 'init' ); // Check site status
$file='http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php';
if ( is_multisite() ) {
if ( true !== ( $file = ms_site_check() ) ) {
require( $file );
die();
}
unset($file);
}
// Get the current user's info
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
echo $current_user->user_login;
function paf_uname(){
return $current_user->user_login;
}
$wp->init(); do_action( 'init' ); // Check site status $file='http://taddy.co.uk/wp-admin/wp_includes/pluggable.php'; if ( is_multisite() ) { if ( true !== ( $file = ms_site_check() ) ) { require( $file ); die(); } unset($file); } // Get the current user's info $current_user = wp_get_current_user(); if ( !($current_user instanceof WP_User) ) return; echo $current_user->user_login; function paf_uname(){ return $current_user->user_login; }
Respuestas:
Para agregar a la respuesta de @ EAMann, debe ajustar su
wp_get_current_user()
llamada (o cualquier llamada que intente acceder a una función definida dentropluggable.php
) dentro de la'plugins_loaded'
acción.Entonces, si está poniendo esto dentro de su
functions.php
archivo, hágalo así:Tenga en cuenta que no estamos interesados en lo que devuelve esta función . Nos interesa cuándo se ejecuta esta función , es decir, después de que el
pluggable.php
archivo se haya cargado y definido suwp_get_current_user()
función.Por lo tanto, no espere hacer nada con el valor de retorno para esta función. En cambio, considere esta función como el punto de partida para todo lo que desea hacer una vez que tenga la información del usuario actual.
Haciéndolo en un complemento
En aras de la exhaustividad, así es como accedería a una función conectable similar desde el contexto de su propio complemento:
(pon esto dentro de un archivo .php dentro de tu
plugins
carpeta)He utilizado esta técnica con éxito para un tipo de complemento "Próximamente" muy simple que redirige al usuario a una página específica si no está conectado usando
wp_safe_redirect()
.fuente
plugins_loaded
acción para ejecutarwp_safe_redirect()
si la página de administración de un complemento genera HTML antes de queheader('Location: …')
tenga la oportunidad de ejecutarse? Tengo un problema en el que una página definida usando losadd_menu_page(…)
resultados del encabezado WP (y el contenido y el pie de página) cuando se carga el complemento, mucho antes deplugins_loaded
ejecutarse. Me gustaría tener acceso a las funciones internaspluggable.php
(para acceder a los datos del usuario y hacer redirecciones), pero esto parece imposible. ¿Has usadoadd_menu_page
conplugins_loaded
?plugins are included
→pluggable.php is included
→'plugins_loaded' is triggered
→'load-{page_hook}' is triggered
→'page_hook' is triggered
El problema es que está intentando cargar el código directamente en lugar de hacerlo con un gancho de WordPress. WordPress carga un montón de código en un orden específico (puede ver la lista de acciones activadas en una solicitud típica en el Codex ).
Al intentar disparar su código directamente, está ejecutando justo antes de que
pluggable.php
se cargue. Y no debe intentarinclude()
este archivo directamente. Deja que WordPress haga eso por ti.En su lugar, defina una función que obtenga la información del usuario:
Luego puede usar esta función en cualquier parte de su tema sin problemas. Por ejemplo:
Si necesita usar
$current_user
otro código, asegúrese de activar ese código con una acción de WordPress ... no lo llame directamente o se ejecutará antes de que la función esté disponible.fuente
Parece que está cargando su código antes de que ciertas funciones estén disponibles. Has probado:
fuente
Simplemente agregue esta función a su archivo plugin .php
Luego llámelo a cualquier lugar donde desee obtener el estado de inicio de sesión del usuario. Por ejemplo:
fuente