WordPress&x2B;多站点:如何添加自定义博客选项以在网络管理中添加新的站点表单?

WordPress&x2B;多站点:如何添加自定义博客选项以在网络管理中添加新的站点表单?,wordpress,Wordpress,在我正在定制的WordPress多站点安装中,我需要在条目表单中添加一个简单的文本字段,用于创建新的博客站点,位于 Network Admin>Sites>addnew 当然,我需要将此字段与该表单中的其他元数据一起保存在{new_blog_prefix}\u options表中 我特别感兴趣的是最简单、最直接和/或“正确的方式”(即WordPress方式)来实现这一点,但我会满足于这种方式™! 到目前为止,我在研究中遇到了许多死胡同: 设置API-[] 据我所知,设置API(a)可能不适用于

在我正在定制的WordPress多站点安装中,我需要在条目表单中添加一个简单的文本字段,用于创建新的博客站点,位于

Network Admin>Sites>addnew

当然,我需要将此字段与该表单中的其他元数据一起保存在
{new_blog_prefix}\u options
表中

我特别感兴趣的是最简单、最直接和/或“正确的方式”(即WordPress方式)来实现这一点,但我会满足于这种方式™!

到目前为止,我在研究中遇到了许多死胡同:

  • 设置API-[]

    据我所知,设置API(a)可能不适用于网络管理部分(尽管在最新版本的WP中可能已更改);此外,(b)这似乎只允许您在仪表板的
    设置部分添加/修改屏幕

  • wpmu_选项hook-[]

    似乎是一个专门为网络设置屏幕添加选项的钩子

  • 添加站点选项/添加博客选项

    我能找到的最近的;似乎允许将特定于站点的选项添加到
    {blogsite\u prefix}\u options
    表中,但仍然无助于将选项添加到管理表单中

所以。。。没有骰子。感谢您的帮助

如果您查看“添加新站点”页面的链接,您会发现WordPress没有为此提供挂钩。当然,可以自己添加一个钩子,但是编辑WordPress核心通常是不好的做法

但是,一旦提交并显示所有信息,页面将调用该函数。在这个函数中有一个被调用的钩子,即action
wpmu\u new\u blog

do_action( 'wpmu_new_blog', $blog_id, $user_id, $domain, $path, $site_id, $meta );
此时,博客已经创建。但是,我们仍然可以通过挂接此操作并将其保存到数据库中来检测字段是否已提交。我们将以下内容添加到插件文件(或模板)中:

至于在页面上显示字段,可以使用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);
进一步的建议可能是,根据您的需要:使用在“常规设置”页面中添加一个输入字段,以便用户以后可以对其进行编辑(可能只有在该字段为默认设置时)。“以后不能更改此字段”方法


我希望这是您需要的帮助。

谢谢,这是一个非常好的答案!值得+100:)非常好,但有一点小小的变化:
if(!empty($\u POST['blog']['new\u field'])$new\u field\u value=$\u POST['blog']['new\u field'])的code>for
。。。考虑NeWiField的空值,可以从WP 4.5接受正确的值,在SITE-NE.PHP的表单标签中存在一个动作钩子,称为“NETWorkStieSeNexForm”。@ BrEnter尼斯!谢谢你注意到这一点!
add\u action
上缺少2个参数<代码>添加操作('wpmu\u new\u blog','add\u new\u blog\u field',10,6)。参考:
(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');
}