繁体   English   中英

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

[英]wordpress plugin -> Call to undefined function wp_get_current_user()

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

显然,这是因为包含 function 的文件/wp-includes/pluggable直到加载插件后才会加载。

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

显然,这是因为包含 function 的文件 /wp-includes/pluggable 直到加载插件后才会加载。

它的确是。 因此,将您正在做的任何事情包装在 function 中,并将其挂接到 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"); 
}
?>

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

安装 wp 3.8 后,我在使用 ajax 获得的页面时遇到了同样的问题。 我用以下代码修复了它:

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

显然 function 已从 pluggable.php 移至 user.php。 我仍然不明白为什么在包含 wp-blog-header.php 后它不起作用。

也尝试添加

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

随着

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

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

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

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

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

require_once('pluggable.php');

不是wp-includes但:

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

尽管这听起来很疯狂,但我的应用程序中的问题正在发生,因为我有一个名为menu.php的文件,其中我有一个 class 来创建 Wordpress 菜单。

从字面上看,只需将文件的名称从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>';
        }        
    }
}

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

我也遇到过这种情况,只是因为我在打开网站之前通过 CLI 安装 Wordpress 后没有等待足够的时间

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM