Errore fatale: Chiamata a funzione non definita wp_get_current_user()

27 mar 2013, 08:22:22
Visualizzazioni: 13.6K
Voti: 4

Sto riscontrando uno strano errore o forse non ho le competenze per risolvere questo problema. Sto sviluppando un plugin per Multisite. Quando uso is_admin(), il mio plugin funziona bene, ma quando uso is_super_admin mi mostra questo errore Errore fatale: Chiamata a funzione non definita wp_get_current_user(). Ho fatto ricerche ma non sono riuscito a trovare una soluzione.

Il mio codice è questo:

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

Ho visto questa domanda ma non mi ha aiutato.

1
Commenti

Solo una nota: is_admin() verifica se ti trovi nel back-end o front-end, non ha nulla a che fare con il fatto che l'utente sia "admin". Al contrario di is_super_admin(), che effettivamente controlla il ruolo dell'utente. Inoltre, per favore non fare Multi-post della stessa Domanda su diversi siti Stack.

brasofilo brasofilo
27 mar 2013 14:11:05
Tutte le risposte alla domanda 1
0

wp_get_current_user() è una funzione pluggable e non è ancora disponibile quando il tuo plugin viene incluso. Devi attendere l'azione plugins_loaded:

Esempio:

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

Oppure sposta il controllo all'interno della funzione del widget:

add_action( 'widgets_init', 'my_unregister_widget' );

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

    // non è un super admin
    unregister_widget( 'WP_Widget_Pages' );
    unregister_widget( 'WP_Widget_Calendar' );
}
27 mar 2013 09:24:12