检查自定义插件中的用户角色

时间:2017-02-24 作者:Kristoffer M

在我的主题中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使整个页面无法工作。所以我的问题是:如何在自定义插件中检查当前用户?

1 个回复
最合适的回答,由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() 在插件中工作。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请