3 回答

TA貢獻1876條經驗 獲得超7個贊
問題來自您的 get_author_role 函數。此函數將返回第一個用戶角色 [在您的情況下為管理員]。
為什么:您的函數不需要任何參數。
解決方案:不要使用array_shift,而是使用array_filter,例如:我假設您有一個帶有方法getRole() 的User 類。你的 $authordata 包含一個 User 對象數組。
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;
}

TA貢獻1946條經驗 獲得超3個贊
雖然它們不適用于我的特定應用程序,但以下方法適用。在這些建議之后進行故障排除確實讓我找到了這個解決方案。
保持函數不變:
function get_author_role() {
global $authordata;
$author_roles = $authordata->roles;
$author_role = array_shift($author_roles);
return $author_role;
}
但是將我的更改foreach為:
$authorID = $user->ID;
$authorMeta = get_userdata( $authorID );
$authorRole = $authorMeta->roles;
這捕獲了陣列中的所有潛在角色。然后我能夠將這些結果內爆到一個逗號分隔的列表中,顯示每個值。
<p class="title"><?php echo implode(", ", $authorRole);?></p>
再次感謝!

TA貢獻1712條經驗 獲得超3個贊
主要問題是您使用的角色貢獻者。它是貢獻者。
<?php
$users = array_merge( get_users( 'role=author&order=ASC' ), get_users( 'role=contributor&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($user);
?>
<div class="card default">
<div class="info">
<p class="title"><?php echo $authorRole;?></p>
</div>
</div>
<?php
function get_author_role($user) {
global $authordata;
$author_roles = $user->roles;
$author_role = array_shift($author_roles);
return $author_role;
}
?>
- 3 回答
- 0 關注
- 192 瀏覽
添加回答
舉報