web-dev-qa-db-ja.com

ユーザーの役割を表示する方法

作成者ページにユーザーの役割を表示する方法。

自分の役割(グループ)を作成したので、投稿の下と作成者リストにユーザーの役割を表示したいと思います。

私はこのコードを試してみましたが、すべての作者のプロファイルにおいて、現在のユーザロールを呼び出していることと現在のユーザロールを表示していることとして動作していません

<?php 
    $user_roles = $current_user->roles;
    $user_role = array_shift($user_roles);

    if ($user_role == 'administrator') {
        echo 'Administrator';
    } elseif ($user_role == 'editor') {
        echo 'Editor';
    } elseif ($user_role == 'author') {
        echo 'Author';
    } elseif ($user_role == 'contributor') {
        echo 'Contributor';
    } elseif ($user_role == 'subscriber') {
        echo 'Subscriber';
    } else {
        echo '<strong>' . $user_role . '</strong>';
    }
?>

現在のユーザーロールではなく、ユーザーの実際のロールを表示するようにこのコードを変更する方法を教えてください。

1
pixelngrain

変化する:

$user_roles = $current_user->roles;

$user = new WP_User( $user_id );
$user_roles = $user->roles;

そして$ user_idはあなたが取得しようとしているロールを持つ実際のユーザーIDです。

更新、

申し訳ありません私はちょうど著者のテンプレートの一部を読んだのでこれを試してみてください:

//first get the current author whos page you are viewing
if(isset($_GET['author_name']))
        $curauth = get_user_by('slug', $author_name);
else
        $curauth = get_userdata(intval($author));
//then get the user object with roles
$user = new WP_User( $$curauth->ID );
$user_roles = $user->roles; 
....
2
Bainternet

現在の投稿者ページではなく、投稿の投稿者の役割を表示しようとしていると思います。

あなたがループの中にいると仮定して、以下をしてください:

//get the post author's ID
$user_id = get_the_author_meta( 'ID' ); //assume we are in The Loop

$user_obj = get_userdata( $user_id );

if( !empty( $user_obj->roles ) ){
    foreach( $user_obj->roles as $role ){
        echo $role;
    }
}

または、各ユーザー/作成者に1つの役割のみを割り当てる場合は、foreachブロック全体を置き換える代わりに次の操作を実行できます。

echo $user_obj->roles[0];
2
WP Themes