web-dev-qa-db-ja.com

致命的なエラー:未定義関数wp_get_current_user()の呼び出し

私はいくつかの奇妙なエラーがあるか、私はこの問題に取り組むためのスキルを持っていないかもしれません。私は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' );
    }
}

私はこれを見ました question しかしそれは私を助けていません。

2
Husnain

wp_get_current_user()はプラグイン可能な関数で、プラグインが included の場合はまだ利用できません。あなたはアクション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;

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