web-dev-qa-db-ja.com

現在のユーザーが割り当てられているロールを表示する

私のWordPressインストールの管理パネルに、現在ログインしているユーザーの役割を表示するだけのセクションがありますか?

たとえば、私は管理者権限を持っていることを知っています。なぜなら、I know ということです。

また、編集者として設定した場合、編集者として確実にログインしていることをすぐに確認するにはどうすればよいですか。 (ただ「知る」ことは別として)。

あなたが一度に10のことをやっていて、道を見失っているということを知っていればそれは本当にいいだろう。

多分それは右上の "How are you .."の後にそれを表示するのがいいでしょう。

_編集_

誰かが飛び込んで「ユーザー」パネルに言及する前に。はい、[ロール]列が表示されていることがわかります(私は管理者なので)が、投稿者だけの人はそれを表示できないでしょう。

2
mikelovelyuk

あなたが示唆したように、これはあなたが管理バーの中でユーザー名の隣にロールを表示する方法です:

function wpse_203917_admin_bar_menu( $wp_admin_bar ) {
    if ( ! $node = $wp_admin_bar->get_node( 'my-account' ) )
        return;

    $roles = wp_get_current_user()->roles;

    $node->title .= sprintf( ' (%s)', implode( ', ', $roles ) );

    $wp_admin_bar->add_node( $node );
}

add_action( 'admin_bar_menu', 'wpse_203917_admin_bar_menu' );
4
TheDeadMedic

現在のユーザーのロールを確認し、プロファイル項目のように管理バーに値を追加します。

現在のユーザーの役割を取得するには、以下の小さな関数を使用します。

/**
 * Returns the translated role of the current user. 
 * No role, get false.
 *
 * @return string The translated name of the current role.
 **/
function fb_get_current_user_role_fixed() {
    global $wp_roles;

    $current_user = wp_get_current_user();
    $roles = $current_user->roles;
    $role = array_shift( $roles );

    return isset( $wp_roles->role_names[ $role ] ) ? translate_user_role( $wp_roles->role_names[ $role ] ) : FALSE;
}

また、関数から管理バーに値を追加する例です。この例では、管理バーのアカウント項目に新しいエントリを追加しています。

add_action( 'admin_bar_menu', 'fb_change_admin_bar_item' );
/**
 * Add item to the admin bar, to the my-account item.
 *
 * @param Array $wp_admin_bar
 */
function fb_change_admin_bar_item( $wp_admin_bar ) {

    $args = array(
        'id'     => 'user_role',
        'title'  => __( 'Role:' ) . ' ' .     fb_get_current_user_role_fixed(),
        'parent' => 'my-account' 
    );
    $wp_admin_bar->add_node( $args );
}

結果をスクリーンショットとして表示すると、例の目的を理解しやすくなります。 enter image description here 

もう1つの例として、管理バーのデフォルトのタイトルで、ユーザー名にロール名を追加します。

add_action( 'admin_bar_menu', 'fb_change_admin_bar_item' );
function fb_change_admin_bar_item( $wp_admin_bar ) {

    $node = $wp_admin_bar->get_node( 'my-account' );

    if ( ! $node ) {
        return $wp_admin_bar;
    }

    $node->title .= ' ' . fb_get_current_user_role_fixed();

    $wp_admin_bar->add_node( $node );
}

結果のスクリーンショットもここにあります。

enter image description here 

3
bueltge

私は単に使用します:

global $current_user; echo array_shift($current_user->roles);

現在のユーザーロールを表示します。

0
mondi