亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

修復不正確的用戶角色輸出

修復不正確的用戶角色輸出

PHP
呼啦一陣風 2021-11-26 15:05:52
我正在嘗試針對具有某些角色的特定用戶在頁面上顯示它們。當我輸出數據時,所有用戶都應該顯示“作者”,但當他們不是管理員時顯示“管理員”。這是我使用的代碼:<?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;  }此方法適用于所有其他變量,如姓名、電子郵件、圖片等。我不確定為什么會發生這種情況。任何幫助表示贊賞。謝謝你。
查看完整描述

3 回答

?
幕布斯6054654

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;

    }


查看完整回答
反對 回復 2021-11-26
?
智慧大石

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>

再次感謝!


查看完整回答
反對 回復 2021-11-26
?
交互式愛情

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;

      }

?>


查看完整回答
反對 回復 2021-11-26
  • 3 回答
  • 0 關注
  • 192 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號