У меня есть сценарий здесь.
В магазине WooCommerce, который я установил, категория продукта 'Bronx'
является родительской, а 'Baby Items Bronx'
- дочерней. Здесь название родительской категории Бронкс - это город, в котором продается продукция под номером 'Baby Items Bronx'
.
Другая категория продуктов 'Newark'
- это родительская категория, а 'Baby Items Newark'
- это дочерняя категория Это. Здесь имя родительской категории Ньюарк - город, из которого продается продукция по номеру 'Baby Items Newark'
.
Клиент из Бронкс пытается купить товары по номеру 'Baby Items Newark'
category.
Я пытаюсь настроить пользовательскую плату за доставку в WooCommerce, где она может рассчитать стоимость доставки в зависимости от местоположения клиента и добавить плату за доставку. Мне удалось добавить комиссию, если клиент выберет город как Бронкс в платежном адресе с этим кодом.
function from_to_city_add_checkout_fee() {
if (($_POST['city']=='Bronx')){
WC()->cart->add_fee( 'Delivery Fee', 15 );
}
Теперь мне нужна функция, которая может рассчитать комиссию если клиент из Бронкс и пытается купить продукты, перечисленные в родительской категории: 'Newark'
Я попробовал следующий код, и он не работает.
function from_to_city_add_checkout_fee() {
if (($_POST['city']=='Bronx') && (has_term( array( 'baby-items-newark' ), 'product_cat' ))){
WC()->cart->add_fee( 'Fee', 150 );
}
}
Я попытался сделать что-то подобное с фрагментом кода, который я получил от https://businessbloomer.com/woocommerce-check-product-category-cart/, который помогает проверить, какая категория продукта находится в корзине, он все еще не работает.
add_action('woocommerce_before_cart', 'bbloomer_check_category_in_cart');
function bbloomer_check_category_in_cart() {
// Set $cat_in_cart to false
$cat_in_cart = false;
// Loop through all products in the Cart
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
// If Cart has category "download", set $cat_in_cart to true
if ( has_term( 'baby-items-newark', 'product_cat', $cart_item['product_id'] ) ) {
$cat_in_cart = true;
break;
}
}
// Do something if category "download" is in the Cart
if ( $cat_in_cart == true) {
// For example, print a notice
// Or maybe run your own function...
function from_to_city_add_checkout_fee() {
if (($_POST['city']=='Bronx')){
WC()->cart->add_fee( 'Delivery Fee', 150 );
}
}
}
Любая помощь приветствуется.