2016-12-01 59 views
0

我有3個用戶角色:角色1,角色2和管理員。我有3個div,不同的應該顯示取決於登錄人員的角色。所以role1只應該看到div1,角色2應該只看到div2,管理員應該看到兩者。向不同角色指定不同內容後未登錄的用戶顯示不同的內容

我該如何同時顯示給未登錄的用戶?我不知道如何寫即。沒有登錄的目標用戶

<?php 
    global $user_login, $current_user; 
    if (is_user_logged_in()) { 
    get_currentuserinfo(); 
    $user_info = get_userdata($current_user->ID); 
    if (in_array('role1', $user_info->roles)) { 
?>  
    <div class="div1">CONTENT</div></a> 
<?php 
} 
    } 
?> 

<?php 
    global $user_login, $current_user; 
    if (is_user_logged_in()) { 
    get_currentuserinfo(); 
    $user_info = get_userdata($current_user->ID); 
    if (in_array('role2', $user_info->roles)) { 
?> 
    <div class="div2">CONTENT</div> 
<?php 
} 
    } 
?> 

<?php 
    global $user_login, $current_user; 
    if (is_user_logged_in()) { 
    get_currentuserinfo(); 
    $user_info = get_userdata($current_user->ID); 
    if (in_array('administrator', $user_info->roles)) { 
?> 
    <div class="div1">CONTENT</div> 
    <div class="div2">CONTENT</div> 
<?php 
} 
    } 
?> 

回答

0

我們應該儘可能重複使用代碼,並且應該儘量保持代碼清潔和足夠短以便可以理解。

渲染每個塊應該是一個函數的責任,以便可以根據需要調用它。此外,由於用戶的角色已使用$user_info = get_userdata($current_user->ID);進行識別,因此我們不需要再次設置該變量。在你的代碼中重複了多次,應該避免。

<?php 

global $user_login, $current_user; 
$user_is_logged_in = is_user_logged_in(); 
if ($user_is_logged_in) { 
    get_currentuserinfo(); 
    $user_info = get_userdata($current_user->ID); 
} 
?> 


<?php if ($user_is_logged_in && (in_array('role1', $user_info->roles) || in_array('administrator', $user_info->roles))): ?> 
    <div class="div1">CONTENT for role1</div> 
<?php endif ?> 

<?php if ($user_is_logged_in && (in_array('role2', $user_info->roles) || in_array('administrator', $user_info->roles))): ?> 
    <div class="div2">CONTENT for role2</div> 
<?php endif ?> 
+0

請解釋你做了什麼。 –

+0

感謝Raptor,但在加載頁面時使用您的代碼錯誤。我必須承認我不承認其中的一些內容,比如<<< HTML。這是一個WordPress網站。 –

+0

'<<< HTTML'在PHP中稱爲heredoc:http://stackoverflow.com/questions/5673269/what-is-the-advantage-of-using-heredoc-in-php可以很容易地添加多行文本 – Raptor