我们需要为许多客户提供特定的付款方式。他们已经被分配到不同的用户角色,但我们希望他们在结账时看到的付款方式更加具体。
这就是我们所需要的
| 零售商|付款方式|
| - ------|- ------|
| A使用者|直接转账|
| B使用者|直接转账|
| C使用者|货到付款或直接转账|
| 销售团队|付款方式|
| - ------|- ------|
| A使用者|直接转账、信用卡、现金|
| B使用者|直接转账|
| C使用者|信用卡|
| D使用者|现金|
| 常客|付款方式|
| - ------|- ------|
| A使用者|现金|
| B使用者|直接转账、信用卡|
| C使用者|信用卡|
| D使用者|现金、直接转账|
我见过很多基于用户角色的支付方法的插件和代码片段,但找不到任何特定用户的东西,所以我对这个感到困惑。
我找到的用户角色代码片段之一是:
// Disable Woocommerce payment gateways for specific user roles
add_filter('woocommerce_available_payment_gateways', 'wpsh_hide_payment_roles', 1);
function wpsh_hide_payment_roles($gateways)
{
$current_user = wp_get_current_user();
$role = $current_user->roles;
global $woocommerce;
// Here goes your user role
if ($role[0] == 'customer') {
// Add payment gateways you need to disable. In this example only BACS is activated
unset($gateways['cheque']); // Cheque
unset($gateways['cod']); // Cash on delivery
unset($gateways['paypal']); // Paypal
// unset($gateways['bacs']); // Direct bank transfer (BACS)
}
return $gateways;
}
1条答案
按热度按时间xxls0lw81#
您找到的代码片段几乎可以正常工作,您不必检查角色,而是必须检查user_id,如下所示:
此方法的缺点是需要为每个客户添加单独的代码块。虽然这对于少数客户来说可能是可管理的,但随着客户数量的增加,代码将变得越来越冗长和难以维护。
一个更有效的解决方案是创建一个插件,让管理员可以轻松配置支付方式。这个插件将提供一个用户友好的界面,用于设置和管理不同的支付选项,并可以与各种支付网关集成。
我可以为你建立这样的插件,随时联系我使用我的个人资料页面上提供的联系信息。