Скрыть / отобразить методы доставки на основе общей корзины | WooCommerce [дубликат]

2 домена mydomain.com и subdomain.mydomain.com могут передавать только файлы cookie, если домен явно указан в заголовке Set-Cookie. В противном случае объем файла cookie ограничивается узлом запроса. (Это называется «cookie только для хоста». См. Что такое cookie только для хоста? )

Например, если вы отправили следующий заголовок из subdomain.mydomain.com :

Set-Cookie: name=value

Тогда cookie не будет отправлен для запросов к mydomain.com. Однако, если вы используете следующее, он будет использоваться в обоих доменах:

Set-Cookie: name=value; domain=mydomain.com

В RFC 2109 домен без ведущей точки означает, что он не может использоваться на субдомены и только ведущая точка (.mydomain.com) позволили бы использовать ее в нескольких поддоменах (но не в домене верхнего уровня, поэтому то, что вы просили, было невозможно в более старой спецификации).

Тем не менее, все современные браузеры уважают новую спецификацию RFC 6265 и будут игнорировать любую ведущую точку, то есть вы можете использовать файл cookie на субдоменах, а также на домен верхнего уровня.

Таким образом, если вы установите cookie как второй пример выше из mydomain.com, он будет доступен subdomain.mydomain.com и наоборот.

См. Также:

2
задан Pavel Němec 8 October 2015 в 11:36
поделиться

1 ответ

Вот фрагмент, который вам нужно использовать. Используя woocommerce_package_rates фильтр-крючок, вы можете условно установить или отключить способы доставки

add_filter( 'woocommerce_package_rates', 'custom_package_rates', 10, 2 );
function custom_package_rates( $rates, $package ) {

    $total = WC()->cart->cart_contents_total;

    if( 300 <= $total ) {

        unset( $rates['flat_rate'] );
        unset( $rates['free_shipping'] );

    } elseif ( 301 >= $total && 1000 <= $total ) {

        unset( $rates['local_delivery'] );
        unset( $rates['free_shipping'] );

    }

    // etc add the remaining condition

    return $rates;
} 
2
ответ дан Anand Shah 21 August 2018 в 08:40
поделиться
  • 1
    Фактически я сделал почти то же самое решение тем временем. Когда я больше ищу в google, я нашел этот . Строго сказано, что woocommerce_package_rates - это то, что мне нужно. Но спасибо за ваш ответ. – Pavel Němec 8 October 2015 в 14:21
  • 2
    Также вы можете использовать $package->contents_cost вместо WC()->cart->cart_contents_total – Vyacheslav Gostyukhin 7 December 2016 в 21:31
Другие вопросы по тегам:

Похожие вопросы: