覆盖/wp-admin/ms-ete-site.php的最佳方式是什么

时间:2016-10-13 作者:Rodrigo M

我有一个多站点网络,希望保护/wp admin/ms delete站点。使其不执行。我们只想从命令行管理站点删除。

目前,我已经在顶部添加了对wp\\u die()的调用,但我更愿意在插件中处理这个问题,而不是对wp核心文件进行任何更改。

在插件中实现这一点的最佳方法是什么?

2 个回复
SO网友:C C

另一种选择是查看挂钩map_meta_cap 并删除用户的以下功能:delete_site. 如果您想要允许delete_site 然后您可以允许该功能。

SO网友:Pat J

你说得对,editing core is a no-no.

相反,您可以这样做。

add_action( \'current_screen\', \'wpse242553_no_delete_site_screen\' );
function wpse242553_no_delete_site_screen() {
    // Check to see if we\'re using the CLI client. If so, bail out.
    if ( \'cli\' == php_sapi_name() ) {
        return;
        // I\'m not sure this is strictly necessary.
    }
    if ( \'ms-delete-site\' == get_current_screen()->base ) {
        // You can add whatever message you like here,
        // or even use wp_safe_redirect() to go elsewhere.
        wp_die( \'Sorry, we only delete sites from the command line.\' );
    }

}
把它放在Must Use plugin 将其应用于网络中的每个站点。

参考文献current_screen hook
  • get_current_screen()
  • php_sapi_name() (我查过了,如果你使用wp-cli, 它返回cli 作为SAPI名称)