我的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;应该看到。我看到了高级功能通知。但相反,我应该可以上传横幅。
那么我做错了什么?
答案 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");