如果/ Else语句 - 不适用于管理员角色 - wordpress

时间:2015-02-24 14:59:07

标签: php wordpress

我的Wordpress网站中有4个不同的用户角色+额外的管理员角色。

我有<div>我只想显示给&#34;经理&#34;用户角色。

以下代码应仅针对&#34;经理&#34;用户角色。因此,如果用户有一个&#34;经理&#34;如果是用户角色,他们会在<p>块中看到通知:这是一项高级功能。您必须具有上传横幅的高级功能

否则 如果用户&#34;不是&#34; a&#34;经理&#34;,他们可以选择上传横幅。

我已准备好此代码:

<?
if(current_user_can('manager')) { ?>    
    <div class="button-area">
        <i class="fa fa-cloud-upload"></i>
        <p class="banner-help-block-heading">UPLOAD BANNER</p>
        <p class="banner-help-block">This is a premium feature. You must have premium capabilities to upload your banner</p>
        <div class="upgrade-button">
            <a href="#" class="button-green-upgrade">Upgrade Account</a>
        </div>
    </div><?
        $manager = true;
    }
else { ?>
    <div class="button-area<?php echo ($banner)? ' elect-hide':''; ?>">
        <i class="fa fa-cloud-upload"></i>
        <a href="#" class="elect-banner-drag elect-btn elect-btn-info"><?php _e('Upload banner', 'elect'); ?></a>
        <p class="help-block"><?php _e('Upload a banner for your profile. Banner size is (825x300) pixel.', 'elect'); ?></p>
    </div><?php 
    $manager = false;
    } ?>

            </div>  

它适用于所有用户角色,包括&#34; manager&#34;,但如果我将该页面视为&#34;管理员&#34; ,我看到&#34;经理&#34;应该看到。我看到了高级功能通知。但相反,我应该可以上传横幅。

那么我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果要检查当前登录用户的用户角色,则必须检查current_user-object上的角色。

$user_roles = $current_user->roles; // Array

但最好还是检查用户功能。

如果您仍然想检查用户的角色,这是我写的一个功能,......也许它可以帮到你

function mi_checkUserRole($role, $userid = null) {
    $user = null;
    if ( !empty($userid) ) {
        $user = new WP_User( $userid );
    } else {
        global $current_user;
        get_currentuserinfo();
        $user = $current_user;
    }
    if ( !empty($user) ) {
        return in_array($role, $user->roles);
    }
    return false;
}

// Example:
$isManager = mi_checkUserRole("manager");