web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie wp_get_current_user ()

J'ai une erreur étrange ou peut-être que je n'ai pas les compétences pour aborder ce problème. Je construis un plugin pour Multisite. Quand est-ce que is_admin() est utilisé, mon plugin fonctionne bien, mais quand j'utilise is_super_admin, il me montre l'erreur Fatal error: Call to undefined function wp_get_current_user(). J'ai fait ma recherche mais je n'ai pas pu trouver de solution.

Mon code est ceci

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

J'ai vu cette question mais ça ne m'aide pas.

2
Husnain

wp_get_current_user() est une fonction connectable qui n’est pas encore disponible lorsque votre plugin est inclus . Vous devez attendre l'action plugins_loaded:

Exemple:

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

Ou déplacez le contrôle dans la fonction du widget:

add_action( 'widgets_init', 'my_unregister_widget' );

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

    // not super admin
    unregister_widget( 'WP_Widget_Pages' );
    unregister_widget( 'WP_Widget_Calendar' );
}
5
fuxia