WordPressでの複数ユーザを一括登録する方法
こんにちは。制作スタッフのユウスケです。
最近女性スタッフが投稿してくれてるので、負けてはいられないと制作側からも投稿します!
今日は、WordPressのユーザ登録に関する小ネタです!
ユーザを規則的に複数作りたい!という時に、管理画面からチマチマ登録するのは手間ですよね?
じゃあデータベースを直接いじるかというと、こちらもそこまで手間は減らず…
そんな時は、PHPでさくっとコーディングしてしまいましょう。
下記コードをfunction.phpに記述してください。
すると、投稿またはページが更新・編集されたタイミングで100ユーザが一発で登録されます。
※アクションフックはサンプルとして、「edit_post」に設定しています。
適宜変更してください。
function add_more_user() { global $wpdb; // ユーザメタ情報用配列 $meta_arr = array( 'first_name' => '', 'last_name' => '', 'description' => '' ); // wp_usersテーブル用INSERT文 $sql_ins_users = 'INSERT INTO wp_users VALUES(NULL, %s, %s, %s, %s, %s, %s, %s, 0, %s)'; // wp_usermetaテーブル用INSERT文 $sql_ins_meta = 'INSERT INTO wp_usermeta VALUES(NULL, %d, %s, %s)'; $unm_head = '000'; $ins_times = date_i18n('Y-m-d H:i:s', current_time('timestamp')); // 登録済みユーザIDの最大値を取得 $uid = $wpdb->get_var("SELECT MAX(ID) FROM wp_users"); // 100件登録 for ($i = 1; $i <= 100; $i++) { // ユーザIDをインクリメント $uid++; // ユーザ名を連番で生成 $unm = $unm_head.sprintf('%03d', $i); // Hashパスワードを生成(通常登録と同じルール) $pswd = wp_hash_password($unm.'sample'); // wp_users へ登録 $wpdb->query($wpdb->prepare($sql_ins_users, $unm, $pswd, $unm, '***@***', '', $ins_times, '', 0, $unm)); // wp_usermeta へ登録 foreach ($meta_arr as $key => $value) { $wpdb->query($wpdb->prepare($sql_ins_meta, $uid, $key, $value)); } } } add_action('edit_post', 'add_more_user');
以下、上記コードを抜粋した説明です。
[wp_users]テーブルには、生成したユーザ名と、Hash化したパスワード、現在時刻を登録しています。
// ユーザ名を連番で生成 $unm = $unm_head.sprintf('%03d', $i); // Hashパスワードを生成(通常登録と同じルール) $pswd = wp_hash_password($unm.'sample'); // wp_users へ登録 $wpdb->query($wpdb->prepare($sql_ins_users, $unm, $pswd, $unm, '***@***', '', $ins_times, '', 0, $unm)); // wp_usersテーブル用INSERT文 // $sql_ins_users = 'INSERT INTO wp_users VALUES(NULL, %s, %s, %s, %s, %s, %s, %s, 0, %s)';
今回は、ユーザ名を連番にして、100ユーザ登録しています。
IDは、AUTO INCREMENT属性なので、NULLを挿入すれば自動で連番が割り振られます。
パスワードのHash化は、Wordpressで定義されている関数を使用しています。
各項目に挿入する値は、適宜変更してください。
[wp_usermeta]テーブルは、1ユーザにつきメタ項目の数だけINSERT文を実行する必要があります。
そこで、メタ項目と対応する値を連想配列に格納し、配列を回してINSERT文を実行しています。
// ユーザメタ情報用配列 $meta_arr = array( 'first_name' => '', 'last_name' => '', 'description' => '' ); ・・・ // ユーザIDをインクリメント $uid++; ・・・ // wp_usermeta へ登録 foreach ($meta_arr as $key => $value) { $wpdb->query($wpdb->prepare($sql_ins_meta, $uid, $key, $value)); } // wp_usermetaテーブル用INSERT文 // $sql_ins_meta = 'INSERT INTO wp_usermeta VALUES(NULL, %d, %s, %s)';
こちらも、umeta_idは、AUTO INCREMENT属性なので、NULLを挿入すれば自動で連番が割り振られます。
user_id は、wp_usersへの登録前にIDの最大値を取得しており、1件登録毎にインクリメントしているので、
そちらを挿入すれば、wp_usersとwp_usermetaで正しく紐づけられます。
また、メタ情報は簡易的に上記の3つしか記述していませんが、適宜必要なものを設定してください。
変動する値の場合は、foreach文の中で値を代入すればOKです。
如何でしたでしょうか?
まあ、あまり使用する機会はないかもしれないですが、
このように、コードを数行記述すれば、メンドクサイ作業もパパッと出来ますので、ご参考にしていただければと!