在我的主题中functions.php
文件我在检查用户角色时没有问题。我用两种不同的方式进行了检查:
if ( current_user_can(\'wholesale_customer\') ) {
// my code
}
以及
$current_user = wp_get_current_user();
if ( in_array( \'wholesale_customer\', (array) $current_user->roles )) {
// my code
}
在我的
functions.php
文件但是,我有一个自定义插件,只需输入:
$current_user = wp_get_current_user();
part使整个页面无法工作。所以我的问题是:如何在自定义插件中检查当前用户?
最合适的回答,由SO网友:Fayaz 整理而成
为什么它不适用于插件:
它不适用于插件,因为当WordPress执行时
$current_user = wp_get_current_user();
在插件中,函数
wp_get_current_user()
尚未定义。WordPress在定义那些与用户相关的函数之前加载插件文件。然而,它适用于主题,因为WordPress在定义和启动这些以用户为中心的功能后加载主题。
如何使其在插件中工作:
要使其在插件中工作,可以使用动作挂钩。例如,它将在
plugins_loaded
动作挂钩已启动。如以下代码:
add_action( \'plugins_loaded\', \'check_current_user\' );
function check_current_user() {
// Your CODE with user data
$current_user = wp_get_current_user();
// Your CODE with user capability check
if ( current_user_can(\'wholesale_customer\') ) {
// Your CODE
}
}
使用上面的代码,您将看到使用检查角色
current_user_can()
以及获取用户信息
wp_get_current_user()
在插件中工作。