3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

はじめに

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

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?