wp_insert_userを使ってユーザー登録フォームを自作してみよう!【wordpressカスタマイズ】

今回作成するのはユーザー登録フォームです。

wordpressのユーザー登録は一応あるのですが、ちょっと扱いづらいし、カスタマイズもできないので、自分で作ってみることにしました。

シングルページアプリケーションで参考テーマも準備しますので、興味ある方はダウンロードどうぞ。

wp_insert_user()という関数があるので、これを使えば簡単にユーザー登録フォームを作ることができるのです。

ユーザー登録フォームを準備

利用する項目はこの4つ。

  • ログインID
  • パスワード
  • メールアドレス
  • プロフィール情報

ブートストラップを使ってお手軽に見た目を整えました。

<form class="mb-5" action="<?php print home_url(); ?>" method="post" enctype="multipart/form-data">
   <div class="form-group row">
       <label class="col-sm-2 col-form-label" for="label-id">ログインID</label>
       <div class="col-sm-10">
           <input id="label-id" type="text" name="login_name" class="form-control" value="">
       </div>
   </div>
   <div class="form-group row">
       <label class="col-sm-2 col-form-label" for="label-password">パスワード</label>
       <div class="col-sm-10">
           <input id="label-password" type="text" name="user_pass" class="form-control" value="">
       </div>
   </div>
   <div class="form-group row">
       <label class="col-sm-2 col-form-label" for="label-mail">メールアドレス</label>
       <div class="col-sm-10">
           <input id="label-mail" type="text" name="user_email" class="form-control" value="">
       </div>
   </div>
   <div class="form-group row">
       <label class="col-sm-2 col-form-label" for="label-text">プロフィール情報</label>
       <div class="col-sm-10">
           <textarea id="label-text" name="user_description" class="form-control"></textarea>
       </div>
   </div>
   <?php wp_nonce_field('add-user-nonce'); ?>
   <button type="submit" class="btn btn-primary mb-2">送信</button>
</form>

セキュリティ対策のnonceも忘れずに。

ユーザー登録の処理

ログインID、パスワード、メールアドレスだけでも十分なのですが、今回はプロフィール情報も設定できるようにしました。

プロフィール情報はupdate_user_meta()という関数で登録することができます。

wp_insert_userはユーザーの作成に成功したらユーザーIDを返してくれますので、そのユーザーIDを使ってupdate_user_metaを実行します。

public function set_insert_user()
{
   //postデータのチェック
   if (!empty($_POST['login_name'])
   && !empty($_POST['user_pass'])
   && !empty($_POST['user_email'])
   && !empty($_POST['user_description'])
   && wp_verify_nonce($_REQUEST['_wpnonce'], 'add-user-nonce')
   ) {
       $userdata = array(
           'user_login' => $_POST['login_name'],
           'user_pass' => $_POST['user_pass'],
           'user_email' => $_POST['user_email']
       );
       $user_id = wp_insert_user($userdata);
       update_user_meta( $user_id, 'description', $_POST['user_description']);
 
       //成功したらリダイレクト
       if ($user_id) {
           session_destroy();
           wp_redirect(home_url());
           exit;
       }
   } else {
       $_SESSION['user_error'] = true;
   }
}

これだけでユーザー登録フォームができます。

参考テーマもありますので、よかったらダウンロードどうぞ。

Webアプリを作ってみる

ユーザー登録や記事投稿のフォームが作れるようになったので、次はシングルページアプリケーションではなく、簡単なSNSとかマッチングアプリのようなものを作ってみようかなと思っています。

Webアプリケーションですね。

通信速度が5Gになったたら、Webアプリケーションもスマホアプリのようにサクサク動くようになり、Webアプリの重要性は高まると僕は思います。

現時点ではスマホアプリの方が注目されていますが、端末の仕様に依存するスマホアプリより、ブラウザで動かすWebアプリの方が開発コストは圧倒的に低いです。

Webエンジニアをやってる僕としては、5Gが広まることでWebがもっと需要が高まればいいなと期待しています。

正社員という奴隷制度に中指を立てるWebエンジニアです。PHPが得意。繋がれた鎖を断ち切るために、自由を取り戻すために、プログラミングスキルを磨く日々です。プログラミングと個人でもできるビジネスについて、情報発信しています。

詳しくはこちら