Заменить количество тележек WooCommerce на количество людей для продуктов, доступных для бронирования - PullRequest
2 голосов
/ 06 мая 2020

Я использую следующий код для обновления страницы корзины для количества с людьми для бронирования продуктов:

// Add "Persons" to replace cart quantity for bookable products
add_filter( 'woocommerce_cart_item_quantity', 'replace_cart_quantity_for_bookings', 20, 3 );
function replace_cart_quantity_for_bookings( $product_quantity, $cart_item_key, $cart_item ){
    // Check that is a bookable product
    if( isset($cart_item['booking']) ){
        $product_quantity  = '<span style="text-align: center; display:inline-block;">'.$cart_item['booking']['Persons'].'<br>
        <small>(' . __('persons','woocommerce') . ')</small><span>';
    }
    return $product_quantity;
}

Но этот код не работает и отображает эту ошибку:

Примечание: неопределенный индекс: лица в /home/www/wp-content/themes/my-child-theme/functions.php

Некоторая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 06 мая 2020

Правильный способ подсчета количества людей в корзине для продукта, который можно забронировать, - это использовать:

$cart_item['booking']['_qty']

Итак, в вашем коде:

add_filter( 'woocommerce_cart_item_quantity', 'replace_cart_quantity_for_bookings', 20, 3 );
function replace_cart_quantity_for_bookings( $quantity, $cart_item_key, $cart_item ){
    // Only for bookable product items
    if( isset($cart_item['booking']) && isset($cart_item['booking']['_qty']) ){
        $quantity  = '<span style="text-align:center; display:inline-block; line-height:10px">'.$cart_item['booking']['_qty'].'<br>
        <small>(' . __('persons','woocommerce') . ')</small><span>';
    }

    return $quantity;
}

Код входит в функции. php файл вашей активной дочерней темы (или активной темы). Протестировано и работает.


Теперь, чтобы получить количество элементов корзины по типу человека для продукта, который можно забронировать, это (дает массив):

$cart_item['booking']['_persons']

, что даст массив, например для 2 разных типа людей в примере ниже:

Array (
        [872] => 2
        [873] => 2
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...