Intereting Posts
Изображения в теме «Двадцать четырнадцать» Как проверить MU через функции.php? wordpress – добавьте настраиваемый раздел admin с полями для имени, адреса, города, состояния и загрузки фотографий Отображение панели уведомлений в заголовке на определенном количестве сообщений Неожиданные = (знак равенства) в wp-почте wp_insert_post создает дубликат сообщения с Safari Как я могу выводить HTML в шаблон без его пропускания через фильтр кеширования? Shortcode от admin textarea до страницы Таблицы стилей Enqueue, если родительская тема имеет более одного .css-файла Пользовательские условия таксономии в меню ведут к какой странице? «Временные файлы даты» в папке «Категория» WooCommerce – Большое количество вариаций продукта (200+) Пользовательский тип сообщения с полями ввода для разделения таблицы в базе данных. Установить текст по умолчанию для редактора в новых сообщениях Как установить bootstrap в дочернюю тему

Установите количество продукта woocommerce на странице посещений

Я пытаюсь установить количество продукта при посещении страницы. Если продукт не находится в корзине, код работает нормально и добавляет правильное количество. Однако, если у меня есть что-то в корзине и обновите его, он добавит еще 13 предметов.

// add unpaid entries to cart add_action( 'pre_get_posts', 'add_entries_to_cart' ); function add_entries_to_cart() { global $woocommerce; // Check we are logged in if ( is_user_logged_in() ) { // Check if we are in admin area if ( ! is_admin() ) { $user = wp_get_current_user(); $entries = get_user_meta($user->ID, 'entry_count', true); $entries_paid = get_user_meta($user->ID, 'paid_entries', true); $product_id = 229; $quantity = $entries - $entries_paid; $found = false; //check if product already in cart, get id if ( sizeof( $woocommerce->cart->get_cart() ) > 0 ) { foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values ) { $_product = $values['data']; if ( $_product->id == $product_id ) { // correct quantity unset( $woocommerce->cart->cart_contents[$product_id] ); $woocommerce->cart->add_to_cart( $product_id, $quantity ); $found = true; } } // if product not found, add it if ( ! $found ) { $woocommerce->cart->add_to_cart( $product_id, $quantity ); } } // no product in cart so add it else { // add to cart $woocommerce->cart->add_to_cart( $product_id, $quantity ); } } } } 

Solutions Collecting From Web of "Установите количество продукта woocommerce на странице посещений"

В моем коде произошла ошибка. Отсюда: http://www.sitepoint.com/woocommerce-actions-and-filters-manipulate-cart/

изменения

 // correct quantity unset( $woocommerce->cart->cart_contents[$product_id] ); $woocommerce->cart->add_to_cart( $product_id, $quantity ); 

к

 // correct quantity // Get it's unique ID within the Cart $prod_unique_id = $woocommerce->cart->generate_cart_id( $product_id ); // Remove it from the cart by un-setting it unset( $woocommerce->cart->cart_contents[$prod_unique_id] ); $woocommerce->cart->add_to_cart( $product_id, $quantity ); 

Сработал.