如果您查看“添加新站点”页面的源代码,您会发现 WordPress 没有为此目的提供挂钩。当然,也可以自己添加一个钩子,但编辑 WordPress 核心通常是不好的做法。
但是,一旦提交并且所有信息都存在,页面就会调用函数wpmu_create_blog()。在这个函数中有一个钩子被调用,即 action 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 文件,仅添加到“添加新站点”页面,然后在页面的 onLoad 中将字段插入页面上的正确位置。您应该添加一个名为“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在您的常规设置页面中添加一个输入字段,以便用户稍后可以编辑它(并且可能仅当它是该字段的默认设置时)。“您以后不能更改此字段”的方法。
我希望这是您需要的帮助。