【发布时间】:2020-09-16 15:13:35
【问题描述】:
如果选择了特定的支付网关,我正在努力为一系列用户角色收取费用。
如果我不检查用户角色,我编写的代码可以正常工作,但是一旦我尝试这样做,它就不会。
我已删除(注释)代码中的用户角色 if 语句,我正在寻求帮助以使其正常工作。
我需要检查用户角色是否与我的array 匹配,如果匹配,请检查支付网关。如果支付网关也匹配,请申请费用。
这是我的代码:
add_action( 'woocommerce_cart_calculate_fees', 'custom_fee', 20, 1 );
function custom_fee ($cart){
if (is_admin() && !defined('DOING_AJAX')) return;
if (!is_user_logged_in()) return;
if (!is_checkout() && !is_wc_endpoint_url()) return;
$customer_role = wp_get_current_user();
$roles_to_check = array( 'vendor', 'external' );
$payment_method = WC()->session->get('chosen_payment_method');
// if (!in_array($roles_to_check, $customer_role->roles)) return;
if ('bacs' == $payment_method){
$payment_fee = $cart->subtotal * 0.05;
$cart->add_fee( 'Payment Fee', $payment_fee, true );
}
}
【问题讨论】:
标签: php wordpress woocommerce checkout hook-woocommerce