首页 > 解决方案 > wp_get_current_user 不在角色中

问题描述

我有以下内容:

<?php $roles = array('silver_user','gold_user');
$user = wp_get_current_user();
foreach ($roles as $role){
if ( !in_array( $role, (array) $user->roles ) ) {
 echo '<i style="color:red;font-size:12px;">(CURRENT)</i>';
}
} ?>

应该检查当前用户是否没有 silver_user 或 gold_user 角色。但是,无论我是否删除 !in_array 标记,它仍然显示当前文本。我错过了一些明显的东西吗?

标签: phpwordpress

解决方案


该函数wp_get_current_user()应该从init操作中调用。您可能需要将所有代码移动到从init.

您也可以使用 WP 本机功能current_user_can()来检查角色。这是示例

add_action('init', 'is_eligible_user');
function is_eligible_user(){

    $roles = array('silver_user', 'gold_user', 'author', 'administrator');

    $user = wp_get_current_user();
    foreach( $roles as $role ) {
        if ( current_user_can( $role ) ) {
            echo "user has privilege"; break;
        }
    }
    return false;
}

推荐阅读