Скрыть способы доставки и оплаты в WooCommerce - PullRequest
0 голосов
/ 30 мая 2018

Я создаю интернет-магазин WooCommerce, и мне нужно настроить страницу оформления заказа, выполнив следующие действия:

  1. Скрыть определенный способ доставки (только один), если сумма заказа> 100 €.

  2. Скрыть способ оплаты наложенным платежом, если выбран местный пикап.

Кто-нибудь знает, как это сделать?У меня есть плагин Code Snippets, поэтому я могу легко добавить любой пользовательский код.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Чтобы скрыть определенный способ доставки на основе общей суммы корзины, вы можете использовать приведенный ниже фрагмент кода.Вам необходимо обновить название метода доставки в коде.

Отключить метод доставки в соответствии с общей суммой корзины

Добавить этот фрагмент в файл functions.php вашей темы или пользовательский плагинfile.

add_filter( 'woocommerce_package_rates', 'shipping_based_on_price', 10, 2 );

function shipping_based_on_price( $rates, $package ) {

    $total = WC()->cart->cart_contents_total;
    //echo $total;
    if ( $total > 100 ) {

        unset( $rates['local_delivery'] ); // Unset your shipping method

    }
    return $rates;

}

Отключить платежный шлюз для определенного способа доставки

Использовать приведенный ниже фрагмент кода.Обновите код в соответствии с вашим методом оплаты и способом доставки.

add_filter( 'woocommerce_available_payment_gateways', 'x34fg_gateway_disable_shipping' );

function x34fg_gateway_disable_shipping( $available_gateways ) {

    global $woocommerce;

    if ( !is_admin() ) {

        $chosen_methods = WC()->session->get( 'chosen_shipping_methods' );

        $chosen_shipping = $chosen_methods[0];

        if ( isset( $available_gateways['cod'] ) && 0 === strpos( $chosen_shipping, 'local_pickup' ) ) {
            unset( $available_gateways['cod'] );
        }

    }

return $available_gateways;

}
0 голосов
/ 30 мая 2018
  1. Существует ряд плагинов, которые сделают это за вас, взгляните на этот Условная доставка и платежи WooCommerce
  2. Вы хотите подключиться кдействие "woocommerce_payment_gateways"

Что-то вроде этого:

function alter_payment_gateways( $gateways ){

    $chosen_rates = ( isset( WC()->session ) ) ? WC()->session->get( 'chosen_shipping_methods' ) : array();

    if( in_array( 'local-pickup:6', $chosen_rates ) ) {
        $array_diff = array('cod');
        $list = array_diff( $list, $array_diff );
    }

    return $list;
}

add_action('woocommerce_payment_gateways', 'alter_payment_gateways', 50, 1);

Число в конце 'local-pickup' в строке 4 будет зависеть от ваших настроек woocommerce.Вы можете найти строку, которую нужно вставить сюда, добавив что-то в корзину, перейдя к оформлению заказа, щелкнув правой кнопкой мыши по опции «Local Pickup» в методах доставки и просмотрев атрибут value .

...