提问者:小点点

PHP如何启用或禁用插件或插件功能(WooCommerce存款)基于用户角色?


我正在建立一个私人经销商WooCommerce商店与woo私人商店插件从Barn2媒体。

这家商店是网站的一部分,有一个公共区域,顾客可以通过填写申请表来申请经销商账户。商店将由两种不同类型的分销商使用,我相应地为其创建了两个用户角色:

1)零售商

2) 批发商。

这两个角色最初是使用Advanced Access Manager创建的。自从我卸载了这个插件并安装了ProfileBuilderPro之后,我需要一个能够完美集成用户角色和表单的插件。应用程序表单实际上是用这个插件创建的。

这样做的原因是,一旦提交,管理员将审查申请并手动批准/激活帐户,根据申请者的配置文件和业务要求,使用其中一个配置文件或另一个配置文件。这正是Profile Builder允许您执行的操作。

登录后,“单一产品”页面上的产品会根据用户配置文件显示不同的价格。对于此功能,我使用WooCommerce插件booster的基于用户角色的价格功能。然后我安装了WooCommerce存款插件,根据用户在结账页面上的角色安排不同的支付程序。

但是,该插件不允许基于用户角色进行不同的支付设置。零售商用户的付款程序应该是直接/定期的,也就是说,必须在订购时全额付款。对于零售商用户,供应依赖于现有库存。

然而,对于批发商用户来说,货物是在订单确认后生产的。为了确认订单,应该先支付一定%(假设40%)的定金。一旦货物生产出来并准备装运,总金额的其余%(比方说60%)将不得不结算,以便货物可以放行。

我现在面临的挑战是:该插件非常适合为批发商用户设置支付程序,我希望保持原样。但是,当登录的用户是零售商时,如何完全禁用它或其功能?


共1个答案

匿名用户

函数deactivate_plugin()将帮助您执行此操作,例如:

deactivate_plugins( '/plugins/xxx.php' );

其中xxx是插件的名称。

并且,要检查用户的能力:

if (in_array('Administrator', $current_user->roles)) {

这里是管理员角色的示例。

完整的代码片段:

add_action('admin_init', 'desactivate_plugin_role');    
function desactivate_plugin_role()
{
    global $current_user;
    if (in_array('Administrator', $current_user->roles)) {
        deactivate_plugins( '/plugin-folder/plugin-file.php' );
    } else { 
        activate_plugins( '/plugin-folder/plugin-file.php' );
    }
}

测试,为我工作,不要忘记更改插件的用户角色,路径和文件。