我一直收到一个"调用未定义的函数"的错误显示



我是PHP编程的新手,我正在尝试自学WordPress主题开发,以获得乐趣,我正在使用PhpStorm作为我的IDE。

我试图更好地理解WordPress的内部工作原理,但我遇到了一些障碍。

我有一个沙盒插件,我创建了用来玩WordPress。

在我的"wp-content/plugins/sharbox/sharbox.php"文件中,我只是在运行基本的php代码,以帮助我适应与WordPress相关的语言。

此外,我使用Composer安装了Kint和Whoops以帮助调试。

现在我已经解决了这个问题,下面是我正在做的:

代码#1

namespace MyDevPlaygroundSandbox;
add_action( 'loop_start', __NAMESPACE__ . 'process_the_string' );
function process_the_string() {
$current_user = wp_get_current_user();
$data_packet = array(
'id'    => $current_user->ID,
'email' => $current_user->user_email,
'name'  => array(
'first_name' => $current_user->user_firstname,
'last_name'  => $current_user->user_lastname,
),
);
render_user_message( $data_packet );
}
function render_user_message( array $current_user ) {
$user_id = $current_user['id'];
d( "Welcome {$current_user['name']['first_name']}, your user id is { {$user_id} }." );
ddd( "Welcome {$current_user['name']['first_name']}, your user id is {$user_id}." );
}

当我在上面运行代码#1时,一切都很好,Kint显示的值也很好。

现在对于我遇到的问题,我不理解WordPress:

代码#2

namespace MyDevPlaygroundSandbox;
add_action( 'loop_start', __NAMESPACE__ . 'check_logged_in_user' );
function check_logged_in_user(){
$current_user = wp_get_current_user();
if ( 0 == $current_user->ID ) {
d('Not logged in');
} else {
ddd('Logged in');
}
}
check_logged_in_user();

当我运行上面的代码#2时,Whoops报告以下错误:

调用未定义的函数MyDevPlaygroundSandbox\wp_get_current_user

出于某种原因,当我运行代码#1时,wp_get_current_user((函数加载得很好,但代码#2加载不好。

如果可能的话,有人能帮我理解为什么这是外行的说法吗?

代码#1和代码#2之间有什么区别?

为什么wp_get_current_user((函数没有加载在代码#2中,而是加载在代码#1中?

谢谢你的帮助。

当您使用"add_action";命令不能使用函数名来调用该操作,你需要使用这样的调用命令:

do_action("check_logged_in_user");

更多信息:https://developer.wordpress.org/reference/functions/add_action/

相关内容

  • 没有找到相关文章

最新更新