Мне трудно применить плату за массив ролей пользователей, если и когда выбран конкретный c платежный шлюз.
Написанный мной код отлично работает, если я не проверю
Я удалил (прокомментировал) оператор роли пользователя 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 );
}
}