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

时间:2011-05-25 16:14:21

标签: php wordpress-plugin wordpress

我正在尝试使用func wp_get_current_user()在我的插件中获取当前用户信息。但我得到了 Call to undefined function wp_get_current_user()

显然会发生这种情况,因为包含该函数的文件/wp-includes/pluggable在加载插件之后才会加载。

有关如何在我的插件中获取用户详细信息的任何想法吗?

10 个答案:

答案 0 :(得分:40)

  

显然这种情况正在发生,因为包含该函数的文件/ wp-includes / pluggable直到加载插件后才会加载。

确实如此。因此,请在函数中包装您正在执行的任何操作,并将其挂接到plugins_loaded或init挂钩上。 (参见wp-settings.php文件)

示例:

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

答案 1 :(得分:16)

你可以使用它,

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

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

答案 2 :(得分:4)

在安装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之后,我仍然不明白为什么它不起作用。

答案 3 :(得分:4)

尝试添加

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

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

答案 4 :(得分:0)

更新WP后,我收到了相同的错误消息。对我有用的修复既快捷又简单:

在wp-includes目录(WP 3.8.x)中找到capabilities.php。 在打开php标记之后在顶部添加以下内容:

require_once('pluggable.php');

答案 5 :(得分:0)

我的问题请用此代码解决

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

答案 6 :(得分:0)

不是wp-includes但是:

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

答案 7 :(得分:0)

听起来很疯狂,但由于我有一个名为 menu.php 的文件,其中有一个用于创建Wordpress菜单的类,因此我的应用程序中出现了问题。

从字面上看,只需将FILE的名称从 menu.php 更改为 nav-menu.php ,即可解决此问题。我重复了3次此问题,因为我不敢相信FILE的名称可能是问题所在。

以防万一有人想知道该文件中的内容,这里是:

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

答案 8 :(得分:0)

尝试在插件 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 );

答案 9 :(得分:-1)

快速修复include_once(ABSPATH . 'wp-includes/pluggable.php');在您的capabilities.php上添加此行