簡體   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