The question:
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.
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
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' );
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0