このナレッジは次のリクエストに応じ投稿されました
JetFormbuilderでフロントエンドからユーザー登録できるようフォームを作成しています。
この時display_nameを同時に設定したいのですが分かりません。
JetFormbuilderでユーザー登録フォームを作成する場合、Post Submit Actionsに『Register User』を使用します。
『Register User』のEdit Actionでは次の項目に値を与えられます。
display_nameやnick_nameはありません。Crocoblock Helpにも確認しましたが、JetFormbuilderではユーザー登録時にdisplay_nameやnick_nameへ値を与えることはできないそうです。
例えばUser Registrationではフロントエンドに作成するユーザー登録フォームに、登録時でdisplay_nameを設定できます(無料版・PRO版、どちらの機能か忘れました。お調べください)。
カスタムコードに対応できる方はこちらがおすすめです。JetFormbuilderを使用する場合にも併用することで実現します。例えば次のコードでは、ユーザー登録が行われた際にnick_nameを大文字アルファベット1文字+数字6桁で生成、display_nameをランダムな英数文字列で生成します。
※但しフォームでユーザーから得た情報を反映させることは下記コードではできません。
/**
* ユーザー登録時にニックネームとディスプレイネームを生成
*
*
*/
add_action( 'user_register', 'set_custom_user_fields', 10, 1 );
function set_custom_user_fields( $user_id ) {
// ニックネームを大文字アルファベット1文字+数字6桁で生成
$random_letter = chr(rand(65, 90)); // ASCIIコードでA-Z
$random_number = sprintf("%06d", rand(0, 999999));
$nickname = $random_letter . $random_number;
// ディスプレイネームをランダムな英数文字列で生成
$display_name = wp_generate_password( 10, false );
wp_update_user( array(
'ID' => $user_id,
'nickname' => $nickname,
'display_name' => $display_name,
) );
}
display_nameを設定したいというのはセキュリティを考えたケースでのことだと思いますのでついでに記しておきます。
ご存知の通りdisplay_nameやnick_nameはデフォルトで姓名に設定がなければユーザー名が、姓名に設定があれば姓名の組み合わせが自動で割り当てられます。
これがコメントなどで表示され個人情報取り扱いの観点で問題となったり、AuthorページなどでパーマリンクにログインIDが表示されることで乗っ取りのリスクが生じます。
私の場合、ユーザーの氏名を管理する場合ではデフォルトのFirst Name並びにLast Nameを使用しません。
代わりにJetEngineのMeta Boxesからusersのメタフィールドを作成し、そこに姓名を格納するfieldを作ります。
後は、JetFormbuilderのPost Submit Actions『Register User』で、デフォルトのFirst Name・Last Nameは空にしておき、meta fieldに姓名を格納します。同時に前述のコードでnick_nameとdisplay_nameを割り当てます。
WordPressを知る誰もが知っている場所に個人情報を置かないことがベターです。
441-8102
愛知県豊橋市山田一番町120
0120-115-118