wp-signup.phpを読む。Nishikawa'sホームWordPressマルチサイトwp-signup.phpを読む。wp-signup.phpを読む。2012.04.21昔やっていたWordPressが動くまでシリーズ、やっぱりやることにした。wp-signup.phpは、ネットワークインストールのとき(マルチサイトのとき)の、会員登録する時に動きます。普通の登録は、wp-login.php?action=registerでやられるんだけど、ネットワークの時はこのwp-signup.phpに転送されます。//nskwで始まるところが僕の書き込みです。下準備では、必要なファイルを読み込んだり、シングルインストールは転送したりしています。子ブログを持っているユーザが、もう一つ子ブログを作成といった、どんなブログを作成しようとしているのかというタイプと、ネットワークのオーナー側で子ブログの作成を許しているのか、既にアカウントを持っている人にブログ作成を許しているのか、という要素が掛け合わさってます。それぞれの関数を作っておいて、最後に条件分岐させながら関数を呼び出しています。illegal_namesは、予約語。不思議な書き方だけど、signup_headerフックにひっかけると、このファイルのwp_headにフックされる。show_blog_form(65行目から117行目)通常の子ブログ作成フォームの場合だと、2ページ目に出るフォームの出力です。サイトのアドレス、サイトの名前、検索エンジンに載せるかどうかを選ばせるところです。validate_blog_form(119行目から125行目)入力されたblognameとblog_titleのバリデーション関数です。wpmu_validate_blog_signup(ブログ名、ブログタイトル、ユーザ)は、ブログ名の重複がないか4文字以上あるか、予約語にあたってないか、ブログ名がカラでないかなどを、3つ目の引数のユーザについて調べます。エラーがあれば、WP_Errorが返ってきます。wp_get_current_user();これ、いいですね。show_user_form(127行目から147行目)通常の子ブログ作成フローでは、一番最初に表示されるフォームです。ユーザ名とメールアドレスを聞いています。フォームの出力と、その下にエラーがあれば。これは、ここにしか出てこないフックで、ツイッターIDを聞いたりできそうです。(聞いたら、保存しなきゃですけど。validate_user_form(149行目から151行目)ユーザ名とメールアドレスをバリデーション。使われていないかとか。signup_another_blog(153行目から196行目)既に子ブログを持っているユーザが、もう一つつくるときに表示する。アカウントにひもづいているブログ名を表示したあと、「どうしてもじゃなかったら、他の人のためにとっておいてね」と表示。渡しつつ、一つ目の関数であるshow_blog_form()を出力しています。(その中で、アドレスとブログ名、検索エンジンを決める。)ここで、submitボタンが出てきました。ここに、フックがある。/></p></form><?php}フォームの中に、signup_hidden_fieldsというフックがあります。これは、wp-signup.phpで3回出てきます。プラグインなどで、外から値を渡すことができるということです。validate_another_blog_signup(198行目から219行目)子ブログ追加時のバリデーションと、問題なければ、ブログの作成まで一気にやっています。wpmu_create_blog(ドメイン、パス、タイトル、ユーザ、メタ情報、サイトID)が実際にブログテーブルを作ったりする関数です。その下の、confirm_another_blog_signup()は、直下で定義されます。成功すればtrue、失敗すればfalseが返されます。confirm_another_blog_signup(221行目から229行目)1アカウントに対する2つ目のブログが出来上がった際に、出力する文字。signup_user(231行目から275行目)通常の子ブログ作成フローで、最初に出るフォームの出力です。通常、子ブログの作成をするのか、アカウント作成だけなのかを選ぶラジオボタンname="signup_for"が出ます。ここで条件分岐があるのですが、$active_signupというグローバル変数の値によって、分岐しています。$active_signupのvalueは、none新規登録を許可しない。userユーザーアカウントの新規登録を許可する。blogログイン中のユーザーによる新規サイト登録を許可する。all新規サイトおよびユーザーアカウントの登録をどちらも許可する。/>が、それ以外の場合にはどちらがいいかをユーザに選ばせるラジオボタンが出ます。validate_user_signup(277行目から295行目)アカウント作成のみ行うときの関数です。wpmu_signup_userは、ユーザ名、メールアドレス、その他のmeta情報をDBに格納し、有効化リンクを含むメールを送信します。confirm_user_signupは、直後に定義されていますが、メールを送ったよというメッセージを表示します。)の箇所では、signup_blog()に値を渡しています。ユーザの登録はまだせずに、次の次に定義されている関数に値を渡してます。confirm_user_signup(297行目から305行目)アカウント作成が終了したときの処理。);があるので、ここで何かできる。signup_blog(307行目から331行目)1ページ目(ユーザ名とメアド入力)のフォームから、値を受け継ぎつつ、2ページ目のフォームを表示させる(show_blog_form:アドレス、タイトル、プライバシー、その他*)。*その他は、show_blog_formの最後にあるsignup_blogformフックに引っ掛けてフォームを出力させて出すことができる。$stageにvalidate-blog-signupを入れている。validate_blog_signup(333行目から358行目)ブログの登録と、有効化リンクを含むメール送信、メールを送った旨の表示。confirm_blog_signup(360行目から378行目)ブログ有効化メールを送った旨の表示してる。最後にsignup_finishedフックがある。以上で、関数の定義は終了し、最後にこれらの関数をどんな場合に出力するかを制御している部分。Nishikawa関連記事2011.10.19[コードリーディング]wpmu-delete-blog()関数を読む!2011.10.24wpmu_signup_user_notification()とadmin_created_user_email()関数の周辺を読む2012.02.28ネットワークインストールで、ユーザによる新規登録を許可しない設定で、存在しないところにアクセスがあった時にリダイレクト先を指定する2012.06.21WordPressのマルチサイトのグローバル変数2013.04.12網元でマルチサイトのセッティングをしてみよう!2010.11.03ワードプレスが動くとき、どんなphpが動いているか2:wp-blog-header.php2011.07.25ユーザ登録の有効化メールが送られる仕組みを調べました。新しい投稿をメールで受け取る私についてWordPressが好き。男木島移住ブログ&ポッドキャスト本書きました。絶版なんですが、ずっと中古で盛り上がっている本です。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。