Ответ 1
Если вы посмотрите на исходный код на странице "Добавить новый сайт", вы увидите, что WordPress не предоставляет для этого крючка цель. Конечно, можно было бы добавить крючок самостоятельно, но, как правило, плохой практикой является редактирование ядра WordPress.
Однако после подачи и всей информации страница вызывает функцию wpmu_create_blog(). В этой функции есть крючок, а именно действие wpmu_new_blog
:
do_action( 'wpmu_new_blog', $blog_id, $user_id, $domain, $path, $site_id, $meta );
На этом этапе блог уже создан. Тем не менее, мы все же можем определить, было ли поле отправлено, подключившись к этому действию и сохранив его в базе данных. Мы добавляем следующее в наш файл (или шаблон) плагина:
function add_new_blog_field($blog_id, $user_id, $domain, $path, $site_id, $meta) {
// Make sure the user can perform this action and the request came from the correct page.
switch_to_blog($blog_id);
// Use a default value here if the field was not submitted.
$new_field_value = 'default';
if ( !empty($_POST['blog']['new_field']) )
$new_field_value = $_POST['blog']['new_field'];
// save option into the database
update_option( 'new_field', $new_field_value);
restore_current_blog();
}
add_action( 'wpmu_new_blog', 'add_new_blog_field' );
Что касается отображения поля на странице, вы можете использовать подход JavaScript. Вы добавляете файл javascript исключительно на страницу "Добавить новый сайт" и на странице "Вниз" страницы, в которую вы вставляете поле, в нужную позицию на странице. Вы должны добавить поле ввода с именем "blog [new_field]". Мы создаем следующий файл JavaScript, который после загрузки добавляет новое поле на страницу "Добавить новый сайт" :
(function($) {
$(document).ready(function() {
$('<tr class="form-field form-required"></tr>').append(
$('<th scope="row">New field</th>')
).append(
$('<td></td>').append(
$('<input class="regular-text" type="text" title="New Field" name="blog[new_field]">')
).append(
$('<p>Explanation about your new field</p>')
)
).insertAfter('#wpbody-content table tr:eq(2)');
});
})(jQuery);
Теперь осталось только добавить этот файл на страницу "Добавить новый сайт" , добавив это в свой файл плагина:
// Only add the script for the page site-new.php (the page hook).
add_action( "admin_print_scripts-site-new.php", 'my_admin_scripts' );
function my_admin_scripts() {
wp_register_script('yourScript', plugins_url('js/yourScript.js', __FILE__));
wp_enqueue_script('yourScript');
}
Дальнейшее предложение может быть в зависимости от ваших потребностей: добавьте поле ввода на страницу общих настроек, используя add_settings_field, чтобы пользователь может отредактировать его позже (и, возможно, только если это значение по умолчанию для этого поля). "Вы не можете изменить это поле позже".
Надеюсь, это поможет вам.