php - 修复不正确的用户角色输出
问题描述
我正在尝试针对具有某些角色的特定用户在页面上显示它们。当我输出数据时,所有用户都应该显示“作者”,而不是当他们不是管理员时显示“管理员”。
这是我使用的代码:
<?php
$users = array_merge( get_users( 'role=author&order=ASC' ), get_users( 'role=contributors&order=ASC' ) );
usort($users, create_function('$a, $b', 'return strnatcasecmp($a->last_name, $b->last_name);'));
foreach($users as $user) :
$authorID = $user->ID;
$authorRole = get_author_role($authorID);
?>
<div class="card default">
<div class="info">
<p class="title"><?php echo $authorRole;?></p>
</div>
</div>
编辑:添加了 Get_author_role 函数
function get_author_role() {
global $authordata;
$author_roles = $authordata->roles;
$author_role = array_shift($author_roles);
return $author_role;
}
此方法适用于所有其他变量,例如姓名、电子邮件、图片等。我不确定为什么会发生这种情况。任何帮助表示赞赏。
谢谢你。
解决方案
问题来自您的 get_author_role 函数。此函数将返回第一个用户角色 [在您的情况下为管理员]。
原因:您的函数不需要任何参数。
解决方案:不要使用array_shift,而是使用array_filter:我假设你有一个带有getRole()方法的用户类。您的 $authordata 包含一个用户对象数组。
function get_author_role(int $userId) {
global $authordata;
$author_roles = $authordata;
$author_role = array_filter($author_roles, function(User $user) use ($userId) {
return $user->getRole();
});
return $author_role;
}
推荐阅读
- c# - Neo4j 客户端 UNWIND 与“日期时间?”
- aem - AEM:一次读取整个多字段 json 值
- reactjs - 如何在使用 redux 的 React 组件中设置默认值?
- python - 如何在 python pandas 的索引中删除 NAN?
- django - 更新 Django 自定义视图的上下文
- laravel - Ubuntu 上的 Laravel 5.7“此 PHP 安装不提供 GD 库扩展。”
- java - 这种聚合在 Kafka 流中是如何工作的?
- git - 当存储库使用 LFS 时,如何在本地测试 gitlab 运行器脚本
- icecast - Icecast 更新标题元数据
- c# - 操作过滤器属性不运行