web-dev-qa-db-ja.com

wordpressプラグイン->未定義の関数wp_get_current_user()の呼び出し

Func wp_get_current_user()を使用して、プラグインで現在のユーザー情報を取得しようとしています。しかし、Call to undefined function wp_get_current_user()を取得しています

どうやらこれは、プラグインがロードされるまで、関数を含むファイル/wp-includes/pluggableがロードされないために発生しています。

私のプラグインでユーザーの詳細を取得する方法について何かアイデアはありますか?

27
Daithí

プラグインがロードされるまで、関数を含む/ wp-includes/pluggableファイルがロードされないため、これは明らかに発生しています。

確かにそうです。そのため、関数で実行していることをすべてラップし、plugins_loadedまたはinitフックにフックします。 (wp-settings.phpファイルを参照)

例:

add_action('init','do_stuff');
function do_stuff(){
  $current_user = wp_get_current_user();
  // ...
}
41

あなたはこれを使うことができます、

<?php
if(!function_exists('wp_get_current_user')) {
    include(ABSPATH . "wp-includes/pluggable.php"); 
}
?>

これはあなたの問題を解決するはずです:)

17
user677607

追加してみてください

require_once('../../../wp-load.php');

に加えて

require_once(ABSPATH.'wp-includes/pluggable.php');
4
Mau

Wp 3.8のインストール後、ajaxで取得したページで同じ問題が発生しました。次のコードで修正しました。

if(!function_exists('wp_delete_user')) {
    include(ABSPATH . "wp-admin/includes/user.php.");
}

どうやら関数はpluggable.phpからuser.phpに移動されています。それでも、wp-blog-header.phpを含めた後、なぜ機能しないのか理解できません。

4

WPを更新した後、同じエラーメッセージが表示されました。私にとってうまくいった修正は素早く簡単です:

Wp-includesディレクトリ(WP 3.8.x)でcapabilities.phpを見つけます。冒頭のphpタグの後に次の行を追加します。

require_once('pluggable.php');
0
colind

私の問題はこのコードで解決してください

include_once(ABSPATH . 'wp-includes/pluggable.php');
0
Kapil Goyal

NOT wp-includes だが :

include_once(ABSPATH . "wp-admin/includes/plugin.php");
0
T.Todua

これが狂ったように聞こえるかもしれませんが、アプリケーションで問題が発生していました。私が作成したクラスがある=menu.phpというファイルがあるためですWordpress menus。

文字通り、単純にFILEの名前をmenu.phpからnav-menu.phpに変更して、問題を修正しました。 FILEの名前が問題であるとは信じられなかったので、問題を3回再現しました。

誰かがそのファイル内に何があったかを知りたい場合に備えて、ここにあります:

class OwNavMenu extends OwCpnt 
{
    function __construct( $location, $args ) {
        $show = $args['show'];
        $span = $args['span'];   

        if ( $show ) {
            $this->menu( $location, $span );
        }     
    }

    function menu( $location, $span ) {
        if ( $location ) {
            echo '<div id="ow-' . $location . '" class="ow-nav ow-' . $location . '">';
                wp_nav_menu(
                    array(
                        'theme_location'  => $location,
                        'link_before'     => ( $span ) ? '<span>'  : '',
                        'link_after'      => ( $span ) ? '</span>' : ''
                    )
                );
            echo '</div>';
        }        
    }
}
0
drjorgepolanco