4

I have some strange error or may be I do not have the skills to tackle this issue. I am building a plugin for Multisite. When is use is_admin(), my plugin works fine but when I use is_super_admin it shows me this error Fatal error: Call to undefined function wp_get_current_user(). I did my search but could not be able to find any solution.

My Code is this

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

I saw this question but it's not helping me.

1
  • 1
    Just a note: is_admin() checks if you are in back or front end, it has nothing to do with the user being "admin". Opposed to is_super_admin(), which indeed checks for the user role. Also, please don't Multi-post the same Question in different Stack sites.
    – brasofilo
    Commented Mar 27, 2013 at 12:11

1 Answer 1

7

wp_get_current_user() is a pluggable function and not yet available when your plugin is included. You have to wait for the action plugins_loaded:

Example:

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

Or move the check into the widget function:

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.