[英]wp_get_current_user not in role
我有以下內容:
<?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文本。 我是否缺少明顯的東西?
您需要像下面這樣使用
<?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>';
}
?>
我猜$ user的角色是silver_user或gold_user。 因此,當您使用循環時,無論!in_array是否都將始終顯示CURRENT。
應該從init
操作中調用函數wp_get_current_user()
。 您可能需要將所有代碼移到從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;
}
$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>';
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.