WooCommerce: Добавление вариативного товара в корзину через пользовательскую ссылку

14 февр. 2013 г., 23:49:37
Просмотры: 35.8K
Голосов: 17

Я пытаюсь добавить вариативный товар в корзину напрямую через ссылку. Я устанавливаю variation_id через строку запроса. Насколько я могу судить, я отправляю данные точно так же, как это делает стандартная форма вариативного товара.

Вот код внутри моей страницы single-product:

<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=262" class="rounded-rect-button add-to-cart">Добавить в корзину</a>

При этом простой товар работает нормально. Я установил цены для вариаций товара в админ-панели. Не понимаю, почему это не так просто, как просто отправка данных. Буду благодарен за любую помощь.

0
Все ответы на вопрос 2
1
13

В настоящее время я работаю с магазином на WooCommerce версии 2.1.12, и, кажется, они изменили это поведение.

Мой AJAX URL для добавления товаров в корзину должен выглядеть так:

?add-to-cart=[ID-ТОВАРА]&variation_id=[ID-ВАРИАЦИИ]&attribute_[НАЗВАНИЕ-АТРИБУТА]=[SLUG-АТРИБУТА]&attribute_[НАЗВАНИЕ-АТРИБУТА]=[SLUG-АТРИБУТА]

Пример:

http://example.com/store/category/product/?add-to-cart=239&variation_id=240&attribute_pa_size=48-2&attribute_pa_color=gold

Это добавляет конкретный товар в корзину и также устанавливает атрибуты вариации в корзине. Вы даже можете установить количество, просто добавив &quantity=[ЗНАЧЕНИЕ]

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

28 авг. 2014 г. 11:10:39
Комментарии

Краткое примечание — проверьте поле выбора вариаций для правильного названия атрибута. Обычно используются дефисы, поэтому получается: &attribute_мой-название-атрибута=значение

Imperative Ideas Imperative Ideas
27 мар. 2015 г. 23:23:38
0

Разобрался с этим. Мне не хватало пары параметров, необходимых для добавления вариативного товара в корзину. Отсутствующими параметрами были variation_id и тип атрибута, на который ссылается variation_id. ID вариации можно найти в админке > WooCommerce > Товары, на вкладке "Вариации" рядом с созданной вариацией товара.

Параметр атрибута формируется из префикса attribute_ и санитизированного имени атрибута. Например, мой атрибут называется "Цвета в наличии", поэтому параметр типа атрибута у меня — attribute_stock-colors. Насколько я понимаю, вы просто устанавливаете attribute_stock-colors=1, потому что метод добавления в корзину просто проверяет его наличие.

Вот простой пример ссылки, которая добавляет в мою корзину товар с вариацией ID 261 и цветом из наличия:

<a href="<?php echo esc_url( $product->add_to_cart_url() ); ?>&variation_id=261&attribute_stock-colors=1">Добавить в корзину</a>

Для использования в реальной ситуации вам нужно динамически устанавливать тип атрибута и ID вариации на основе выбора пользователя в выпадающем списке или подобном элементе (если только у каждого товара не одна и та же вариация, что фактически превращает его в простой товар).

18 февр. 2013 г. 17:10:00