Показывать платежный шлюз BACS только для зарегистрированных пользователей, только если купон применен к корзине в WooCommerce. - PullRequest
1 голос
/ 03 мая 2019

Код, который у меня есть, позволяет скрыть платежный шлюз BACS для гостей и клиентов, но мне нужно изменить его так, чтобы шлюз BACS стал доступным только в том случае, если клиент / администратор применяет определенный код купона, называемый FOOD, в CART или CHECKOUT. .

Другими словами: скрывайте шлюз BACS до тех пор, пока на КОРЗИНУ или ПРОВЕРКУ не будет нанесен КУПОН, называемый FOOD.

Вот код, который у меня есть:

add_filter('woocommerce_available_payment_gateways', 'show_bacs_if_coupon_is_used', 99, 1);
function show_bacs_if_coupon_is_used( $available_gateways ) {

        $current_user = wp_get_current_user();

        if ( isset($available_gateways['bacs']) && (current_user_can('customer'))) {
             unset($available_gateways['bacs']);
             } else if ( isset($available_gateways['bacs']) && !is_user_logged_in())  {
             unset($available_gateways['bacs']);
         }
         return $available_gateways;
}

1 Ответ

0 голосов
/ 03 мая 2019

Показывать способ оплаты BACS только в том случае, если к корзине применен определенный купон только для зарегистрированных пользователей (с использованием метода WC_Cart get_applied_coupons()) :

add_filter('woocommerce_available_payment_gateways', 'show_bacs_for_specific_applied_coupon', 99, 1);
function show_bacs_for_specific_applied_coupon( $available_gateways ) {
    $coupon_code = 'FOOD';

    if ( isset($available_gateways['bacs']) && ! ( is_user_logged_in() &&  
    in_array( strtolower($coupon_code), WC()->cart->get_applied_coupons() ) ) ) {
        unset($available_gateways['bacs']);
    }
    return $available_gateways;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...