WordPressでユーザー登録(追加)時に紐づいたページを作成

WordPressで構築した会員サイトでユーザー作成時にプロフィールページを作りたい場合や、店舗情報などユーザーを振り分けるなどといった場合、ユーザーの追加時に自動で固定ページ(または投稿、カスタム投稿タイプ)を作成したいことがあるかと思います。また、作成したページとユーザーと紐づける方法も記述します。

WordPressでユーザー登録(追加)時に紐づいたページを作成

作成日
2016/05/27
更新日
2016年8月16日

WordPressで構築した会員サイトでユーザー作成時にプロフィールページを作りたい場合や、店舗情報などユーザーを振り分けるなどといった場合、ユーザーの追加時に自動で固定ページ(または投稿、カスタム投稿タイプ)を作成したいことがあるかと思います。また、作成したページとユーザーと紐づける方法も記述します。

ユーザー追加時にページを作成

WordPressのいいところでコアなところを編集しないでいいようにアクションフックが用意されており、「ある処理を行ったときにこの処理もする」といったことが可能になります。ユーザーを追加したときというアクションフックがあるため、そこに投稿する関数を付け足すイメージです。

ユーザーの追加時のアクションフック

ユーザーを追加するときのアクションフックは「user_register」になります。「user_register」は引数にユーザーIDを受け渡すことが出来るため、新規追加したユーザーの情報をタイトルや本文、カスタムフィールドなどに利用できるわけです。

新しく投稿する関数

新しく投稿するには「wp_insert_post()」を利用しました。投稿の情報を色々と設定できるのですが、その中で投稿タイプも設定できるのでカスタム投稿タイプを利用したい場合などにも便利です。タイトルと本文は必須になります。Codexの説明でどのような設定が可能かみれますので参考にしてみてください。この関数は投稿が成功した場合、投稿IDを返しますので、続けて処理が可能です。

関数リファレンス/wp insert post

カスタムフィールドを更新

ユーザーと結び付けるためにカスタムフィールドを利用しました。作成した著者を新ユーザーにしてもよかったのですが、ユーザーには編集の権限を持たせたくなかったので今回はユーザーと関連付けるだけにとどめました。カスタムフィールドを更新するには、「update_post_meta() 」を利用します。引数は順に、「投稿ID」、「カスタムフィールドのキー」、「カスタムフィールドの値」となっています。

まとめ

これらを組み合わせると以下のようになります。「auto_insert_page( $user_id )」はユーザー定義関数で、「add_action( ‘user_register’, ‘auto_insert_page’, 10, 1 );」と結びついています。ユーザーを追加したときに「auto_insert_page()」を行うということですね。
また、「get_user_meta()」では登録されたユーザーIDからそのユーザーメタ情報を引っ張ってきています。ここでの注意点は、ユーザー登録フォームにて必須になるものだけを利用した方がよさそうです。ログインID、メールアドレスやパスワードのみしか登録の際に行っていない場合、値が空になってしまいます。
そしてフォームからの情報を利用する場合、悪意ある攻撃を防ぐために「wp_strip_all_tags()」を使います。

ユーザーIDから関連付けられたページIDを取得する

ここまでで既に新規ユーザーが追加されたときに固定ページが作成されます。実際に利用するには、「ユーザーIDから関連付けられたページを取得したい」といったことも出てくると思います。今回は「$wpdb」を利用して取得します。1ユーザーにつき1件しかない想定のため配列の「0」番目を返す設定になっていますが、複数取得する場合は配列ごと返してあげてもいいかもしれません。

ログインユーザーから利用したい場合は、以下のようにすると関連付けられたIDを取得できます。

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Category

Archive