php - wp_get_current_user 不在角色中
问题描述
我有以下内容:
<?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 标记,它仍然显示当前文本。我错过了一些明显的东西吗?
解决方案
该函数wp_get_current_user()
应该从init
操作中调用。您可能需要将所有代码移动到从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;
}
推荐阅读
- spring-cloud-stream - Spring Cloud Stream App VS Spring Cloud Task App
- php - 删除()或强制删除()。更好的确定方法
- c++ - 尝试使用 std::functional 和 std::bind 在 C++ 中创建 C# 样式的事件访问修饰符
- webstorm - 分支选项卡在 WebStorm 中不可见
- html - HTML - 调整浏览器大小时裁剪背景图像宽度
- crate - 如何使用es客户端查询crateDB
- java - 如何检查jsonobject中对象的返回类型是什么
- django - 如何测试自定义错误页面的 django 400 错误请求错误?
- javascript - 不显示和阻止无法通过 JavaScript 工作
- complexity-theory - 如何计算自动微分的计算复杂度?