我正在建立一个私人经销商WooCommerce商店与woo私人商店插件从Barn2媒体。
这家商店是网站的一部分,有一个公共区域,顾客可以通过填写申请表来申请经销商账户。商店将由两种不同类型的分销商使用,我相应地为其创建了两个用户角色:
1)零售商
2) 批发商。
这两个角色最初是使用Advanced Access Manager创建的。自从我卸载了这个插件并安装了ProfileBuilderPro之后,我需要一个能够完美集成用户角色和表单的插件。应用程序表单实际上是用这个插件创建的。
这样做的原因是,一旦提交,管理员将审查申请并手动批准/激活帐户,根据申请者的配置文件和业务要求,使用其中一个配置文件或另一个配置文件。这正是Profile Builder允许您执行的操作。
登录后,“单一产品”页面上的产品会根据用户配置文件显示不同的价格。对于此功能,我使用WooCommerce插件booster的基于用户角色的价格功能。然后我安装了WooCommerce存款插件,根据用户在结账页面上的角色安排不同的支付程序。
但是,该插件不允许基于用户角色进行不同的支付设置。零售商用户的付款程序应该是直接/定期的,也就是说,必须在订购时全额付款。对于零售商用户,供应依赖于现有库存。
然而,对于批发商用户来说,货物是在订单确认后生产的。为了确认订单,应该先支付一定%(假设40%)的定金。一旦货物生产出来并准备装运,总金额的其余%(比方说60%)将不得不结算,以便货物可以放行。
我现在面临的挑战是:该插件非常适合为批发商用户设置支付程序,我希望保持原样。但是,当登录的用户是零售商时,如何完全禁用它或其功能?
函数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' );
}
}
测试,为我工作,不要忘记更改插件的用户角色,路径和文件。