web-dev-qa-db-ja.com

管理者の名前順を変更するにはどうすればよいですか。

Wp-admin/users.phpに移動すると、2列目にユーザーのフルネームが表示されますが、正しい順序ではありません。ハンガリーでは、異なる名前順を使用します。 http://ja.wikipedia.org/wiki/Hungarian_names

だから私は "姓 - 名"から "姓 - 名"に名前を変更する必要があります

これどうやってするの?

1
passatgt

デフォルトのName列を変更することはできませんが、それを非表示にして独自のカスタム列を作成することができます。

まず、admin_initにアクションとフィルタを追加して、新しい列を追加して管理します。

function wpa66544_user_custom_column_init(){
    add_filter( 'manage_users_columns', 'wpa66544_user_add_column' );    
    add_action( 'manage_users_custom_column', 'wpa66544_user_manage_column', 100, 3 );
}
add_action( 'admin_init', 'wpa66544_user_custom_column_init' );

次に、上記の私たちのフィルタにフックされた関数は、デフォルトの名前の列を削除し、独自のカスタム列を追加します。

function wpa66544_user_add_column( $columns ) {
    // hide the default name column
    unset( $columns['name'] );

    // add our custom name column
    $columns['custom_name']  = 'Name';        
    return $columns;
}

最後に、関数は最初のステップでアクションにフックし、各ユーザーの列の値を出力します。

function wpa66544_user_manage_column( $val, $column_name, $user_id ) {
    $last_first = '';
    if ( 'custom_name' == $column_name ):
        $first_name = get_the_author_meta( 'first_name', $user_id );
        $last_name = get_the_author_meta( 'last_name', $user_id );
        $last_first = $last_name . ' ' . $first_name;
    endif;
    return $last_first;
}

ここで欠けていることの1つは、列がソート可能ではないということです。可能な方法はpre_user_queryアクションを介してであることを私は知っていますが、私はこれを行う方法をあまり理解していません。この場合は、列をソート可能にする通常の方法では機能しないため、SQLを直接変更する必要があるようです。姓/名はユーザーメタであり、ユーザークエリのこのコンテキスト内でユーザーメタで並べ替えることはできません。

また、デフォルトのName列もソートできないようです。Nameヘッダーをクリックしても、ユーザー名ヘッダーをクリックするのと同じことが実行されます。

1
Milo