マルチサイトサインアッププロセスは、簡単に調整することはできません。他のプロセスとは異なり、多くのフックがありますが、重いカスタマイズにはあまりうまくいかないようですので、ご不便をおかけします。
私が正しく理解していれば、あなたが望むものを達成するのはそれほど複雑ではありませんが、主にサインアップ(つまり、ユーザーがカスタム情報を送信するとき)とアクティベーション(つまり、新しいブログが実際に作成されるとき)は別に発生します。
始めるのに必要な非常に大まかなコードを次に示します。うまくいけば、正しい方向に導くことができます。
// Add text field on blog signup form
add_action('signup_blogform', 'add_extra_field_on_blog_signup');
function add_extra_field_on_blog_signup() { ?>
<label>An extra field</label>
<input type="text" name="extra_field" value="" />
<?php
}
// Append the submitted value of our custom input into the meta array that is stored while the user doesn't activate
add_filter('add_signup_meta', 'append_extra_field_as_meta');
function append_extra_field_as_meta($meta) {
if(isset($_REQUEST['extra_field'])) {
$meta['extra_field'] = $_REQUEST['extra_field'];
}
return $meta;
}
// When the new site is finally created (user has followed the activation link provided via e-mail), add a row to the options table with the value he submitted during signup
add_action('wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6);
function process_extra_field_on_blog_signup($blog_id, $user_id, $domain, $path, $site_id, $meta) {
update_blog_option($blog_id, 'extra_field', $meta['extra_field']);
}
留意してください:
- プラグインを介して入力をフィルタリングする場合は、選択入力を使用して提供されたオプションをロックダウンすることを強くお勧めします。
- 一部のフィールドは必須であり、登録時に検証を通過するため(最小文字、サイト名の許可されない文字、ブラックリストに登録された名前など)、最初の入力の値を設定するときに、$ _ REQUESTグローバルで追加フィールドを確認することをお勧めしますWordPressのデフォルトフィールドの値を修正するために返送された場合にユーザーが入力を失わないようにするための機能。
- 明らかに、最後の関数のアイデアをプラグインに最適なものに置き換えることができますが、フィールドの値はその最後の関数内から利用できるようになります。
最後に、既存のすべてのブログからすべての「extra_field」値を後で処理する場合は、単一のテーブルに情報を保存することを強くお勧めします。多分使うupdate_site_option
代わりに、update_blog_option
その最後の関数の blog_idを失いますが、これはその場合には必要ありません。
とにかく、それがどうなるか、そして幸運を教えてください!