WordPress多站点在网站创建时禁用所有默认小部件


Wordpress multisite disable all default widgets on site creation

我找不到如何在网站创建时禁用默认小部件。我的意思是,当我在 Wordpress 多站点网络中创建站点时,它不会自动创建侧边栏小部件,例如"元"。

看到两年多没有更新的插件可能会帮助我解决这个问题,但我不想下载那么旧的东西。

有谁知道如何做到这一点?

默认小部件是通过在wp-admin/includes/upgrade.php中调用update_option() wp_install_defaults()创建的。

wp-includes/ms-functions.php wpmu_create_blog()调用wp_install_defaults()后,动作wpmu_new_blog被触发。

因此,您可以通过再次调用 update_option() 来挂接到 wpmu_new_blog 并删除默认小部件,这次使用空数组进行sidebar-1

add_action('wpmu_new_blog', function($blog_id){
    switch_to_blog($blog_id);
    update_option('sidebars_widgets',
        ['wp_inactive_widgets' => [], 'sidebar-1' => [], 'sidebar-2' => [],
         'sidebar-3' => [], 'array_version' => 3]);
    restore_current_blog();
});

我相信unregister_widget就是你要找的。