WordPressを使っていてあんまり本名をドーンと表示する事は少なかったのでなんとも思わなかったんですが、JP版を使っていても管理画面のユーザー編集が「名→姓」になってます。
そして、ユーザー一覧で表示されるのも「名→姓」。
これは日本語圏で使うのはちょっと気持ち悪い人もおるんちゃうかーと。
例の如くfunctions.phpに追記の形でこれを実現させる方法。
functions.phpに追記
まずユーザー編集場面のフィールドを「名→姓」から「姓→名」へ。
/** ユーザー編集画面を「名→姓」から「姓→名」に */ function lastfirst_name() { ?><script> jQuery( function ($){ $( '#last_name' ).closest( 'tr' ).after($( '#first_name' ).closest( 'tr' )); }); </script><?php } add_action( 'admin_footer-user-new.php' , 'lastfirst_name' ); add_action( 'admin_footer-user-edit.php' , 'lastfirst_name' ); add_action( 'admin_footer-profile.php' , 'lastfirst_name' ); |
これで編集画面のフィールドは並び変わります。
が、これだけではユーザー一覧画面での表示名までは変わってくれません。
ユーザー一覧画面を「名→姓」から「姓→名」へ。
/** 列の内部名設定 */ function lastfirst_users_column( $columns ) { $new_columns = array (); foreach ( $columns as $k => $v ) { if ( 'name' == $k ) $new_columns [ 'lastfirst_name' ] = $v ; else $new_columns [ $k ] = $v ; } return $new_columns ; } add_filter( 'manage_users_columns' , 'lastfirst_users_column' ); /** 値設定 */ function lastfirst_users_custom_column( $output , $column_name , $user_id ) { if ( 'lastfirst_name' == $column_name ) { $user = get_userdata( $user_id ); return $user ->last_name . ' ' . $user ->first_name; } } add_filter( 'manage_users_custom_column' , 'lastfirst_users_custom_column' , 10, 3 ); /** ユーザー一覧の姓名のソート設定を行います。*/ function lastfirst_users_sortable_column( $columns ) { $columns [ 'lastfirst_name' ] = 'lastfirst_name' ; return $columns ; } add_filter( 'manage_users_sortable_columns' , 'lastfirst_users_sortable_column' ); /** 並び替え処理*/ function lastfirst_pre_user_query( $query ){ global $wpdb ; if ( isset( $query ->query_vars[ 'orderby' ]) && 'lastfirst_name' == $query ->query_vars[ 'orderby' ] ) { $query ->query_from .= " LEFT JOIN $wpdb->usermeta AS ln ON ($wpdb->users.ID = ln.user_id) AND ln.meta_key = 'last_name' " ; $query ->query_from .= " LEFT JOIN $wpdb->usermeta AS fn ON ($wpdb->users.ID = fn.user_id) AND fn.meta_key = 'first_name' " ; $query ->query_orderby = " ORDER BY CONCAT(ln.meta_value, fn.meta_value) " . ( $query ->query_vars[ "order" ] == 'ASC' ? 'asc' : 'desc' ); } return $query ; } add_filter( 'pre_user_query' , 'lastfirst_pre_user_query' ); |
これでユーザー一覧画面も姓名になります。
複数ユーザでの管理を行う場合、こういうのも気になったりしますもんねえ。
Enterキーの挙動も含めて、日本語化をひとまとめにしたプラグインでも作ってみようかな。。