Php wordpress插件->;调用未定义函数wp_get_current_user()

Php wordpress插件->;调用未定义函数wp_get_current_user(),php,wordpress,Php,Wordpress,我正在尝试使用func wp\u get\u current\u user()获取插件中的当前用户信息。但是我越来越 调用未定义函数wp\u get\u current\u user() 显然,这是因为包含函数的文件/wp includes/pluggable在加载插件之后才会加载 有人知道如何在我的插件中获取用户详细信息吗 显然这是因为包含函数的文件/wp includes/pluggable在加载插件之后才会加载 的确如此。所以,把你正在做的任何事情都包装在一个函数中,并将其挂接到插件或in

我正在尝试使用func wp\u get\u current\u user()获取插件中的当前用户信息。但是我越来越
调用未定义函数wp\u get\u current\u user()

显然,这是因为包含函数的文件
/wp includes/pluggable
在加载插件之后才会加载

有人知道如何在我的插件中获取用户详细信息吗

显然这是因为包含函数的文件/wp includes/pluggable在加载插件之后才会加载

的确如此。所以,把你正在做的任何事情都包装在一个函数中,并将其挂接到插件或inithook上。(请参阅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"); 
}
?>


这应该可以解决您的问题:)

在安装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');
还可以尝试添加

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

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

请用这个代码解决我的问题

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

快速修复
include_once(ABSPATH.'wp includes/pluggable.php')在您的功能上添加这一行。php

wp包括
但:
这听起来可能很疯狂,但我的应用程序中出现了问题,因为我有一个名为menu.php的文件,在那里我有一个类来创建Wordpress菜单

从字面上讲,只需将文件名从menu.php更改为nav menu.php,即可解决此问题。我重复了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>';
        }        
    }
}
class-OwNavMenu扩展了OwCpnt
{
函数构造($location,$args){
$show=$args['show'];
$span=$args['span'];
如果($show){
$this->menu($location,$span);
}     
}
功能菜单($location,$span){
如果($位置){
回声';
wp_导航菜单(
排列(
“主题位置”=>$location,
'link_在'=>($span)?''之前:'',
'在'=>($span)之后的链接?'''
)
);
回声';
}        
}
}

尝试在插件PHP文件中使用它

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

$current_user = wp_get_current_user();
$user=esc_html( $current_user->ID );

工作得很有魅力。我正在处理一个类,该类在构造上加载用户详细信息。这是其他人的密码。我现在有:`add_action('plugins_loaded','construct_my_class');函数构造_my_class(){$controller=new myClass();}@Prakash取决于插件体系结构。对于大多数wordpress开发,我可以想象它将进入插件
index.php
file@denis德伯纳德-现在我用这个吗?我正在尝试“限制”添加元框到管理员只。。。include(ABSPATH.“wp includes/pluggable.php”)对我有用,但你说它会破坏wp…你不认为这违背了改变核心文件的最佳实践吗。在我的情况下,它破坏了wp:)@DenisdeBernardy我想实现这个解决方案,但我想知道,这将如何破坏wp?@Lumo5:我已经多年没有接触过wp了,但是在我的脑海中,a)文件是否总是由WP使用include_包含一次?b) 在添加可插拔功能(特别是在进行正确身份验证之前与身份验证和权限管理相关的功能)时,您是否会最终打开安全问题?还有c)OP想要做的事情有一个钩子。@DenisdeBernardy哪一个钩子更适合?
if ( !function_exists('wp_get_current_user') ) {
    include(ABSPATH . "wp-includes/pluggable.php"); 
}

$current_user = wp_get_current_user();
$user=esc_html( $current_user->ID );