这是一个经典的XY问题,您面临的原始问题是:
“如何防止客户端禁用woocommerce插件”
对于哪个mu插件是您的解决方案,您现在要求对您的解决方案进行修复,也就是说,对修复进行修复,这从来不是一个好迹象。
因此,要解决您最初的问题,我们有三种方法:
如果WooCommerce被禁用,请优雅地失败,并明确如何修复问题,警告用户它已被禁用,优雅地失败,并在此处和任何地方放置指向重新激活按钮的链接。客户应该很快得到消息,他们所做的会破坏网站
禁用禁用链接,例如facebook open graph插件:
test
add_filter( \'plugin_action_links\', \'disable_plugin_deactivation\', 10, 4 );
function disable_plugin_deactivation( $actions, $plugin_file, $plugin_data, $context ) {
// Remove edit link for all
if ( array_key_exists( \'edit\', $actions ) )
unset( $actions[\'edit\'] );
// Remove deactivate link for crucial plugins
if ( array_key_exists( \'deactivate\', $actions ) && in_array( $plugin_file, array(
\'facebook-open-graph-meta-in-wordpress/fbogmeta.php\'
)))
unset( $actions[\'deactivate\'] );
return $actions;
}
禁用插件菜单本身如果客户端看不到插件页面,则无法禁用插件:
function remove_menus () {
global $menu;
$restricted = array( __(\'Plugins\') );
end ($menu);
while (prev($menu)){
$value = explode(\' \',$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}
}
add_action(\'admin_menu\', \'remove_menus\');
我建议既要优雅地失败,又要禁用插件菜单。优雅地失败,您的代码将更加健壮,健壮的代码是有利可图的代码(您节省的时间变成了数天痛苦的支持和神秘的bug)。如果客户不知道有一个插件菜单,他们就不会知道你可以禁用插件。