ナレッジ
Myページ

ナレッジ・ベース

- 公開 -
リクエスト

このナレッジは次のリクエストに応じ投稿されました

JetFormbuilderでユーザー登録する際にdisplay_nameを設定したい

JetFormbuilderでフロントエンドからユーザー登録できるようフォームを作成しています。

この時display_nameを同時に設定したいのですが分かりません。

通知設定
通知
guest
0 コメント
Inline Feedbacks
View all comments
リクエスト
編集中
修正依頼
有効
精査中
無効
issue&solution
JetFormbuilderでフロントエンドからのユーザー登録時にdisplay_nameへ値を与える方法
2024-02-18
UITS_尾藤

JetFormbuilderではデフォルトで登録時にdisplay_nameを設定することはできない

JetFormbuilderでユーザー登録フォームを作成する場合、Post Submit Actionsに『Register User』を使用します。

『Register User』のEdit Actionでは次の項目に値を与えられます。

  • User Login
  • Email
  • Password
  • Confirm Password
  • First Name
  • Last Name
  • User URL

 

display_nameやnick_nameはありません。Crocoblock Helpにも確認しましたが、JetFormbuilderではユーザー登録時にdisplay_nameやnick_nameへ値を与えることはできないそうです。

フロントエンドからのユーザー登録時にdisplay_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を知る誰もが知っている場所に個人情報を置かないことがベターです。

 









使

植田屋ITソリューション - 急募
修正依頼
修正依頼はありません

当記事に誤りや不足がございましたでしょうか。
ご指摘いただけますと幸いです。よろしくお願いいたします。

タイトル *
内容 *
修正が必要な箇所やその理由などをお伝えください
  • 修正依頼のタイトル及び内容は公開されます。
  • タイトル及び内容は編集させていただく場合がございます。
  • 送信の内容に関しご連絡させていただく場合がございます。
  • 修正依頼への対応が意にそぐわない場合もございますこと予めご承知おきください。
0
Would love your thoughts, please comment.x