Я строил свою электронную коммерцию для продажи вина с wordpress 4.2.2 и woocommerce 2.3.11 Я купил плагин «Product Bundle» (v. 4.9.5) для woocommerce.Удалить товар в корзине woocommerce
Я уже вставить эту функцию в моей function.php файл
add_action('woocommerce_check_cart_items', 'woocommerce_check_cart_quantities');
function woocommerce_check_cart_quantities() {
$multiples = 6;
$total_products = 0;
foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
$total_products += $values['quantity'];
}
if (($total_products % $multiples) > 0)
wc_add_notice(sprintf(__('You need to buy in quantities of %s products', 'woocommerce'), $multiples), 'error');
}
, потому что мне нужно продавать бутылки на кратному 6.
Теперь я эта проблема с продуктом в комплекте, потому что в корзине также подсчитывается родительский элемент.
Если я создаю пакет с 6 бутылками, в корзине у меня есть сообщение «Вам нужно купить в количестве% s продуктов», потому что общее количество составляет 7 (6 бутылок плюс 1 комплект).
Я пишу WooThemes поддержки, и я Получать этот ответ:
By default, Bundle contents are not counted. A Bundle will be counted as one item, no matter how many products it contains.
When using Product Bundles and needed to count the content, you need to use the WC()->cart->get_cart_contents_count() method to count all the cart items.
------ ОБНОВЛЕНИЕ -------
Я пытаюсь добавить в моей функции код из ответов , так что теперь моя функция.php выглядит так:
<?php
/**
* Child-Theme functions and definitions
*/
// check that cart items quantities totals are in multiples of 6
add_action('woocommerce_check_cart_items', 'woocommerce_check_cart_quantities');
function woocommerce_check_cart_quantities() {
$multiples = 6;
$total_products = 0;
foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
$total_products += $values['quantity'];
}
if (($total_products % $multiples) > 0)
wc_add_notice(sprintf(__('You need to buy in quantities of %s products', 'woocommerce'), $multiples), 'error');
}
function so_28359520_remove_bundles_counting(){
global $woocommerce_bundles;
remove_filter('woocommerce_cart_contents_count', array($woocommerce_bundles->display, 'woo_bundles_cart_contents_count'));
}
add_action('init', 'so_28359520_remove_bundles_counting');
function so_28359520_cart_contents_count($count) {
$cart = WC()->cart->get_cart();
$subtract = 0;
foreach ($cart as $key => $value) {
if (isset($value[ 'stamp' ]) && ! isset($value[ 'bundled_by' ])) {
$subtract += $value[ 'quantity' ];
}
}
return $count - $subtract;
}
add_filter('woocommerce_cart_contents_count', 'so_28359520_cart_contents_count');
?>
но ничего не происходит. Я также попробую новую установку wordpress и woocommerce с темой по умолчанию (двадцать тринадцать, а также twnty пятнадцать) для теста, если в теме есть какой-то javascript, который мешает и изменяет количество, но результат тот же. Если у меня есть 1 пакет с 6 бутылками, я получаю сообщение от первой функции.
Какая ошибка PHP вы получаете? – helgatheviking
с функцией cit_update_cart_count() Я получаю PHP Неустранимая ошибка: вызовите функцию-член get_cart() на не-объект в. \ Wp-content \ themes \ Wine-child \ functions.php в строке 20 , поэтому я отбросить эту функцию – Wolftrick
Ну, это означает, что 'WC() -> cart' не является объектом, скорее всего, потому что крюк' init' происходит до того, как корзина инициализирована. Вероятно, лучше всего отказаться от этой функции. – helgatheviking