Фатальная ошибка: Call to undefined function wp_get_current_user()

27 мар. 2013 г., 08:22:22
Просмотры: 13.6K
Голосов: 4

Я столкнулся со странной ошибкой или, возможно, мне не хватает навыков для решения этой проблемы. Я разрабатываю плагин для Multisite. Когда я использую is_admin(), мой плагин работает нормально, но при использовании is_super_admin появляется ошибка Fatal error: Call to undefined function wp_get_current_user(). Я искал решение, но не смог его найти.

Мой код выглядит так:

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

Я видел этот вопрос, но он мне не помог.

1
Комментарии

Примечание: is_admin() проверяет, находитесь ли вы в админке или на фронтенде, это не имеет никакого отношения к роли пользователя "администратор". В отличие от is_super_admin(), который как раз проверяет роль пользователя. Также, пожалуйста, не публикуйте один и тот же вопрос на разных сайтах Stack.

brasofilo brasofilo
27 мар. 2013 г. 14:11:05
Все ответы на вопрос 1
0

wp_get_current_user() — это подключаемая функция (pluggable), которая ещё не доступна в момент подключения вашего плагина. Необходимо дождаться действия plugins_loaded:

Пример:

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

Или перенести проверку внутрь функции виджета:

add_action( 'widgets_init', 'my_unregister_widget' );

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

    // не супер-админ
    unregister_widget( 'WP_Widget_Pages' );
    unregister_widget( 'WP_Widget_Calendar' );
}
27 мар. 2013 г. 09:24:12