我有以下内容:
<?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标记,它仍然显示CURRENT文本。我缺少明显的东西吗?
答案 0 :(得分:0)
您需要使用以下内容
<?php
$roles = array('silver_user','gold_user');
$user = wp_get_current_user();
if ( !in_array( $user->roles, $roles ) ) {
echo '<i style="color:red;font-size:12px;">(CURRENT)</i>';
}
?>
答案 1 :(得分:0)
我猜$ user的角色是silver_user或gold_user。因此,当您使用循环时,无论!in_array是否都将始终显示CURRENT。
答案 2 :(得分:0)
应该从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;
}
答案 3 :(得分:0)
$roles = array('silver_user', 'gold_user');
$user = wp_get_current_user();
if(!empty($user->roles)){
foreach ($roles as $role) {
if (in_array($role, (array) $user->roles)) {
echo '<i style="color:red;font-size:12px;">(CURRENT)</i>';
}
}
}