Help us understand the problem. What is going on with this article?

Wordpressのマルチサイトでメンバーページを作るときのいろいろ【Theme My Login】

More than 3 years have passed since last update.

はじめに

WordPressのマルチサイト上に会員サイトを作ることになりました。

会員サイトというのは一般ユーザーが会員登録するサイトで、ログインしたりマイページで何か機能があったり、会員限定ページを見れたりするやつですね。
WordPressでユーザー登録する場合は、管理者ユーザーではなく、購読者ユーザーとかのタイプで登録することになります。権限を分けているからもちろん管理画面に入れないですが、一旦権限が変えられてしまったら管理者になれるような層の、ユーザー情報になりますね。

マルチサイトというのは、WordPressで複数のサイトを並行して運用できる管理方法です。下記のようなURLになります。
http://main-site.com/
http://main-site.com/sub1/

WordPressをがっつりシステム組み込む感じで使ったことがなかったんですが、今回やってて上記のようなことがわかりました。

Theme My Loginの特徴

会員サイトを作るのにTheme My Loginというプラグインを試しました。
特徴としては、下記のようなところになります。
・テンプレートを自分のテーマ画面にコピーして使えるので、見た目をカスタマイズしやすい。
・設定ページがちょっとシステム寄りというか、わかりにくい。

マルチサイトだとUser Moderationができない。

Theme My LoginにはUser Moderationという機能があります。
http://www.jfarthing.com/development/theme-my-login/user-moderation/
会員仮登録後の本登録方法を、None:認証なし、E-mail:メール認証、Admin:管理者承認制の3タイプから選べるみたいですね。

しかしこれがマルチサイトだと選べない。
General ‹ ROYAL TRADING — WordPress.png
「Enable User Moderation」にチェックを入れて保存しようとすると、
「User Moderation is not currently compatible with multisite.」となります。

この、UserModerationしない段階で会員登録すると、「あなたのユーザー名はXXXで登録されました!」みたいな画面になりますが、まだ本登録ではなくて、送られたメールをクリックしたら本登録のようです。
154ce0f8c579d323affa2abc813027de.png
つまりデフォルトはメール認証です。

マルチサイトだとデフォルトから項目追加ができない

会員登録ページは、Theme My Loginデフォルトの項目がこんな感じです。
9f34967cd5af3a47d4adee3a7e2c2cce.png
ユーザー名、メールアドレス、パスワード2回ですね。
ここに項目追加ができないのですよ。このままだとこれ以外の項目が、本登録後の会員情報編集でしか取れなくなりますよね。
単純にテキストボックスを追加しても登録されません。
たぶん私がわからなかっただけかと思いますが、やりかたが分からなかったです。

バリデーションの追加は出来ました。

functions.php
function tml_registration_errors( $obj ) {

    //
    // ここで、$_POST値を元に追加のバリデーションを行う
    // $errors["xx"] = "yy";
    $obj['errors'] = $errors;

    return $obj;
}
add_filter( 'wpmu_validate_user_signup', 'tml_registration_errors' );

「(マルチサイト)サインアップ時のバリデーション追加」はできたのですが、「(マルチサイト)サインアップ時の登録処理追加」ができなかったんですよね。。

DBを見ると、
サインアップ時→sineupテーブルにデータ登録
本登録時→users & user_metaテーブルにデータ登録しているようです。
sineupテーブルのmetaカラムに、パスワードはシリアライズで入っているんで、ここに入れるみたいなんですが。

どのフックを使えばいいかというのはこの辺にあります。
http://wpdocs.osdn.jp/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3_API/%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%95%E3%83%83%E3%82%AF%E4%B8%80%E8%A6%A7#.E7.AE.A1.E7.90.86.E7.94.BB.E9.9D.A2.E9.96.A2.E9.80.A3.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.B7.E3.83.A7.E3.83.B3
これ見てもわからないですね。マルチサイトの情報少ないし。
大体ユーザー登録というのがメインは管理ユーザー用のものなので、使いやすくするのは別次元に分けたほうがいいのではと思います(新しくmemberテーブルで管理するとか)

テンプレートファイル名がわかりにくい

d68ecab28dc1f04b856a774165a98393.png
あとは細かい話ですが、Theme My Loginのテンプレートファイル名は、こんな感じであります。
これを自分のテーマディレクトリに置いたら、固定ページを作ってくれるんです。ちょっとファイル名の前に「tml-」とか付けてほしいなと思いますね。ただでさえテーマディレクトリってごちゃごちゃしてるんで。

リンク

Theme My Login公式ページ
https://wordpress.org/plugins/theme-my-login/

Theme My Login使用の際は下記を参考にさせていただきました。
使い方の日本語解説はバッチリです。
http://yahss.net/wordpress/765-registration-form2-with-theme-my-login/
http://qiita.com/hiroki_y/items/7ca0a2a364eb9edabe39

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away