web-dev-qa-db-ja.com

表示名をフルネームとして強制する

すべてのユーザーに名前の表示をFirstname Lastnameにするか、またはこれをデフォルトに変更することを強制できる方法はありますか。

3
Svish

これはユーザー登録時に設定されます。フィルタごとの値を変更することができます'user_register'

テストされていないサンプルコード

/* Plugin Name: First name plus last name as default display name. */
add_action( 'user_register', 'wpse_67444_first_last_display_name' );

function wpse_67444_first_last_display_name( $user_id )
{
    $data = get_userdata( $user_id );
    // check if these data are available in your real code!
    wp_update_user( 
        array (
            'ID' => $user_id, 
            'display_name' => "$data->first_name $data->last_name"
        ) 
    );
}
3
fuxia

より良い解決策は、ユーザーが更新されるたびに表示名を更新することです。私はこの古いスレッドを頼りにしています。なぜなら、私はこの解決策をどこにも見つけられないからです。

/* First name as default display name. */
add_action( 'profile_update', 'set_display_name', 10 );

function set_display_name( $user_id ) {

    $data = get_userdata( $user_id );

    if($data->first_name) {

        remove_action( 'profile_update', 'set_display_name', 10 ); // profile_update is called by wp_update_user, so we need to remove it before call, to avoid infinite recursion
        wp_update_user( 
            array (
                'ID' => $user_id, 
                'display_name' => "$data->first_name"
            ) 
        );
        add_action( 'profile_update', 'set_display_name', 10 );
    }
}
1
Marco Marsala