簡體   English   中英

wp_get_current_user不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM