Error fatal: Call to undefined function wp_get_current_user() en WordPress

27 mar 2013, 08:22:22
Vistas: 13.6K
Votos: 4

Tengo un error extraño o quizás no tengo las habilidades para resolver este problema. Estoy construyendo un plugin para Multisite. Cuando uso is_admin(), mi plugin funciona bien pero cuando uso is_super_admin me muestra este error Fatal error: Call to undefined function wp_get_current_user(). Hice mi búsqueda pero no pude encontrar ninguna solución.

Mi código es este:

if(!is_super_admin()){
    add_action('widgets_init','my_unregister_widdget');
    function my_unregister_widgets() {
        unregister_widget( 'WP_Widget_Pages' );
        unregister_widget( 'WP_Widget_Calendar' );
    }
}

Vi esta pregunta pero no me está ayudando.

1
Comentarios

Solo una nota: is_admin() verifica si estás en el backend o frontend, no tiene nada que ver con que el usuario sea "admin". A diferencia de is_super_admin(), que sí verifica el rol del usuario. También, por favor no hagas publicaciones múltiples de la misma pregunta en diferentes sitios de Stack.

brasofilo brasofilo
27 mar 2013 14:11:05
Todas las respuestas a la pregunta 1
0

wp_get_current_user() es una función pluggable y aún no está disponible cuando tu plugin es incluido. Debes esperar a la acción plugins_loaded:

Ejemplo:

add_action( 'plugins_loaded', 'wpse_92517_init' );

function wpse_92517_init()
{
    if(!is_super_admin())
        add_action('widgets_init','my_unregister_widget');
}

function my_unregister_widgets() {
    unregister_widget( 'WP_Widget_Pages' );
    unregister_widget( 'WP_Widget_Calendar' );
}

O mueve la verificación dentro de la función del widget:

add_action( 'widgets_init', 'my_unregister_widget' );

function my_unregister_widgets() 
{
    if ( is_super_admin() )
        return;

    // no es super admin
    unregister_widget( 'WP_Widget_Pages' );
    unregister_widget( 'WP_Widget_Calendar' );
}
27 mar 2013 09:24:12