Func wp_get_current_user()を使用して、プラグインで現在のユーザー情報を取得しようとしています。しかし、Call to undefined function wp_get_current_user()
を取得しています
どうやらこれは、プラグインがロードされるまで、関数を含むファイル/wp-includes/pluggable
がロードされないために発生しています。
私のプラグインでユーザーの詳細を取得する方法について何かアイデアはありますか?
プラグインがロードされるまで、関数を含む/ wp-includes/pluggableファイルがロードされないため、これは明らかに発生しています。
確かにそうです。そのため、関数で実行していることをすべてラップし、plugins_loadedまたはinitフックにフックします。 (wp-settings.phpファイルを参照)
例:
add_action('init','do_stuff');
function do_stuff(){
$current_user = wp_get_current_user();
// ...
}
あなたはこれを使うことができます、
<?php
if(!function_exists('wp_get_current_user')) {
include(ABSPATH . "wp-includes/pluggable.php");
}
?>
これはあなたの問題を解決するはずです:)
追加してみてください
require_once('../../../wp-load.php');
に加えて
require_once(ABSPATH.'wp-includes/pluggable.php');
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を含めた後、なぜ機能しないのか理解できません。
WPを更新した後、同じエラーメッセージが表示されました。私にとってうまくいった修正は素早く簡単です:
Wp-includesディレクトリ(WP 3.8.x)でcapabilities.phpを見つけます。冒頭のphpタグの後に次の行を追加します。
require_once('pluggable.php');
私の問題はこのコードで解決してください
include_once(ABSPATH . 'wp-includes/pluggable.php');
wp-includes
だが :include_once(ABSPATH . "wp-admin/includes/plugin.php");
これが狂ったように聞こえるかもしれませんが、アプリケーションで問題が発生していました。私が作成したクラスがある=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>';
}
}
}