如何在u-plugins文件夹中使用WooCommerce?

时间:2013-03-25 作者:Mayur Karwa

我不希望客户端错误地停用woocommerce插件。我最近在wordpress中遇到了一个叫做必须使用插件的概念。(http://codex.wordpress.org/Must_Use_Plugins)

我只是想知道是否有可能将woocommerce作为必备插件使用。

3 个回复
SO网友:Tom J Nowell

这是一个经典的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)。如果客户不知道有一个插件菜单,他们就不会知道你可以禁用插件。

SO网友:RRikesh

我认为这不是一个好主意。

有一些limitations 具有mu-plugins:

不会收到自动更新的通知,插件激活挂钩不会执行。换句话说,插件在激活时使用的任何设置操作都不会被触发,WordPress不会在mu-plugins 文件夹更好的方法是activate_plugins capability 给你的客户。

SO网友:Androliyah

必用插件(又称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.

Codex

结束

相关推荐

多个单个站点,一个插件目录-调整plugins_url()

[这不是一个多站点问题]更新:这个问题在逻辑上是不可能的,或者是思维循环,如果你愿意的话,请检查下面的更新。技术是laid out here in WPEngineer.它允许有一个插件文件夹来为运行在同一服务器上的多个WordPress站点提供服务。所以,我所有的开发站点都在wp配置中有这个。phpdefine( \'WP_PLUGIN_DIR\', \'/www_dev/base-site/wp-content/plugins\' ); define( \'WP_PLUGIN_URL\', \