web-dev-qa-db-ja.com

デフォルトで「表示名を公に..」をユーザー名に設定

My Wordpress isteは現在、ユーザーの識別情報を自分のFIRSTNAME + LASTNAMEで表示しています。

大多数は彼らのユーザー名で知られることを好みます。私は自分の "表示名を公に"に手動で変更する方法を説明しましたが、これは理想的とは言えません。

新しいユーザーがデフォルトで自動的にユーザー名で表示されるようにします。私はこれを "Display Name Publicly As"プロパティを参照するいくつかのプラグインに反映させたいと思います。

どうすればこれができますか?

1
CodyBugstein

将来のすべてのユーザーがこれを望むのであれば、 user_register イベントにフックして更新してください。

WP_User を使用して get_userdata および wp_update_user 情報を新しい表示名で取得します。

add_action( 'user_register', 'wpse_20160110_user_register', 10, 1 );

function wpse_20160110_user_register ( $user_id ) {

    // get the user data

    $user_info = get_userdata( $user_id );

    // pick our default display name

    $display_publicly_as = $user_info->user_login;

    // update the display name

    wp_update_user( array ('ID' => $user_id, 'display_name' =>  $display_publicly_as));
}

毎回ログインを設定したい場合は wp_login using PHP_INT_MAX をフックしてください。

function wpse_20160110_wp_login ( $user_login, $user ) {

    wp_update_user(array('ID' => $user->ID, 'display_name' => $user_login));

}

add_action('wp_login', 'wpse_20160110_wp_login', PHP_INT_MAX, 2);
1
jgraup

登録とプロファイルの更新の両方で表示名をプログラムで設定し、無限ループを回避するために、Bettyが経験したように、表示名がすでに必要に応じて設定されているかどうかを確認する必要があります。

add_action( 'user_register', 'set_login_as_displayname' );
add_action( 'profile_update', 'set_login_as_displayname' );

function set_login_as_displayname( $user_id )
{
    $data = get_userdata( $user_id );

    if ($data->user_login != $data->display_name) {
        wp_update_user( array ('ID' => $user_id, 'display_name' =>  $data->user_login));
    }
}
0
UAU