wordpressのマルチサイトにおけるブログ登録フォームのカスタマイズ
wp-signup.phpを複製
wordpressのマルチサイト構成のサインアッププロセスは、
- ユーザー情報の入力
- ブログ情報の入力
という順序でフォームが進行する。この部分のフォームのフロント側とバックエンドに流すデータの扱いをカスタマイズする場合には、wp-signup.phpを複製し、そのコピーしたファイルをwp_signup_locationフィルターでカスタマイズしたサインアップフォームへリダイレクトすると作業をしやすくなる。
wp_signup_location filter
wp-signup.php
を
wp-signup-new.php
というファイル名で複製し、フィルターフックを以下のように設定する。
add_filter( 'wp_signup_location', array($this, 'new_signup_page' ));
独自関数new_signup_pageは以下のとおり、
function new_signup_page() { $page = 'http://'.DOMAIN_CURRENT_SITE.'/wp-signup-new.php'; return $page; }
DOMAIN_CURRENT_SITEは、wordpressのマルチサイトをインストールする際に、wp-config.phpに追記するように促される定数で、ルートドメイン名が設定されている。
この設定をすることで、
test.com/wp-login.php?action=register
へのアクセスは、
test.com/wp-signup-new.php
へリダイレクトされるようになり、wp-signup.phpの場合と同じようにユーザーセットアッププロセスが進行する。そして、
wpmu_signup_stylesheet
をカスタムすることでフロント側のcssを変更することができる。また、フォームの要素を追加して新しいデータを入力可能な状態にして、新規の値をフィルターフックでデータベースに追加することも可能になる。add_signup_metaでブログの補足情報を登録する方法では、サインアップ時に補足データをdbに格納し、その後のアクティベーション時にデータを有効化する方法をエントリーした。
wordpressのユーザー登録フォームをカスタマイズするなら知っておきたいノウハウである。