Процес реєстрації на багатосторонніх веб-сайтах - це непроста настройка. На відміну від інших процесів, у нього є багато гачків, але вони, здається, не надто добре поєднуються для важких налаштувань, тому я розумію ваше розчарування.
Якщо я правильно розумію, досягти того, що ви хочете, не так вже й складно, хоча це не може бути одноетапним рішенням, не перекриваючи велику частину поведінки WordPress за замовчуванням, головним чином через те, що реєстрація (тобто коли ваш користувач подасть користувацьку інформацію) та активація ( тобто коли новий блог буде фактично створений) відбуватимуться окремо.
Ось дуже приблизний код, який вам знадобиться для початку. Сподіваємось, це спрямовує вас у правильному напрямку:
// 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, що в цьому випадку не потрібно.
У будь-якому випадку, повідомте нам, як це йде, і удачі!