我不希望客户端错误地停用woocommerce插件。我最近在wordpress中遇到了一个叫做必须使用插件的概念。(http://codex.wordpress.org/Must_Use_Plugins)
我只是想知道是否有可能将woocommerce作为必备插件使用。
我不希望客户端错误地停用woocommerce插件。我最近在wordpress中遇到了一个叫做必须使用插件的概念。(http://codex.wordpress.org/Must_Use_Plugins)
我只是想知道是否有可能将woocommerce作为必备插件使用。
这是一个经典的XY问题,您面临的原始问题是:
“如何防止客户端禁用woocommerce插件”
对于哪个mu插件是您的解决方案,您现在要求对您的解决方案进行修复,也就是说,对修复进行修复,这从来不是一个好迹象。
因此,要解决您最初的问题,我们有三种方法:
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)。如果客户不知道有一个插件菜单,他们就不会知道你可以禁用插件。我认为这不是一个好主意。
有一些limitations 具有mu-plugins
:
不会收到自动更新的通知,插件激活挂钩不会执行。换句话说,插件在激活时使用的任何设置操作都不会被触发,WordPress不会在mu-plugins
文件夹更好的方法是activate_plugins
capability 给你的客户。
必用插件(又称mu插件)是安装在内容文件夹内的特殊目录中的插件,在安装的所有站点上都会自动启用。
必须使用的插件不会显示在wp admin的插件页面中,除非从必须使用目录中删除插件文件,否则不能禁用该插件,默认情况下,该目录位于wp content/mu插件中。
Features
Always-on, no need to enable via admin and users cannot disable by accident.
Can be enabled simply by uploading file to the mu-plugins directory, without having to log-in.
[这不是一个多站点问题]更新:这个问题在逻辑上是不可能的,或者是思维循环,如果你愿意的话,请检查下面的更新。技术是laid out here in WPEngineer.它允许有一个插件文件夹来为运行在同一服务器上的多个WordPress站点提供服务。所以,我所有的开发站点都在wp配置中有这个。phpdefine( \'WP_PLUGIN_DIR\', \'/www_dev/base-site/wp-content/plugins\' ); define( \'WP_PLUGIN_URL\', \