Избегайте проверки для определенных продуктов в конкретной стране в Woocommerce

Вот что я хочу сделать:
Если клиент выбирает Канаду в качестве страны доставки, и в корзине есть определенный товар, оформление заказа не должно происходить, и должно появиться сообщение об ошибке, информирующее клиента о том, почему оформление заказа не произошло.

Мое исследование:
Добавить или удалить сообщения об ошибках woocommerce имеет код для генерации сообщений об ошибках WooCommerce. Вчера я задал вопрос, который дал мне коды, чтобы проверить, есть ли определенный продукт в корзине и установлена ​​ли страна доставки Канада Удалить Канаду из списка стран, когда определенные продукты есть в корзине на Woocommerce Я не уверен, к какому фильтру / действию я должен подключить свой код, чтобы он запускался всякий раз, когда на странице оформления заказа нажимается «Разместить заказ».

Обновить:
Поэтому я попытался объединить два кода, которые я перечислил в мое исследование но это не сработало. Любая помощь, если мне нужно подходить к этому по-другому, будет очень признателен
Идентификатор продукта 15631 & 12616

1

Решение

Это может быть сделано с помощью ловушки действий woocommerce_check_cart_items через эту пользовательскую функцию:

add_action( 'woocommerce_check_cart_items', 'products_not_shipable_in_canada' );
function products_not_shipable_in_canada() {
// Only on checkout page (allowing customer to change the country in cart shipping calculator)
if( ! is_checkout() ) return;

// Set your products
$products = array(15631, 12616);

// Get customer country
$country = WC()->session->get('customer')['shipping_country'];
if( empty($country) ){
$country = WC()->session->get('customer')['billing_country'];
}
// For CANADA
if( $country == 'CA' ){
// Loop through cart items
foreach( WC()->cart->get_cart() as $item ){
// IF product is in cart
if( in_array( $item['product_id'], $products ) ){
// Avoid checkout and display an error notice
wc_add_notice( sprintf(
__("The product %s can't be shipped to Canada, sorry.", "woocommerce" ),
'"' . $item['data']->get_name() . '"'
), 'error' );
break; // Stop the loop
}
}
}
}

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

введите описание изображения здесь

Связанные с: Установите минимально допустимый вес для конкретной страны в WooCommerce

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector