Добавить второй продукт WooCommerce в корзину через AJAX с установленным флажком

Я безуспешно пытался всеми возможными способами добавить второй условный товар в корзину в «Добавить в корзину», если установлен флажок.

У меня есть форма заказа, и я хотел бы добавить второй продукт в корзину, если установлен флажок. Я начал с попытки добавить значение через сеанс или cookie. Это работало на страницах с отдельным продуктом, но не с шорткодом «Добавить в корзину» [add_to_cart id = «XX»]. Я думал, что AJAX — мой лучший шанс, но я неопытен с AJAX и не могу сказать, шорткод или я.

Вот мой дешевый способ добраться до «Добавить в корзину» при наличии флажка.

Входные данные:

function sample_input(){

echo '
<form id="myform" action="">
Check this box:
<input type="checkbox" id="add-to-cart" name="16379" /><input type="submit" value="Submit" /></div></form>
';
}

Загрузить скрипты:

    function enqueue_scripts_styles_init() {
wp_enqueue_script( 'ajax-script', plugins_url( '/js/ajax-testing-script.js', __FILE__ ), array('jquery'), 1.0 ); // jQuery will be included automatically
wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) ); // setting ajaxurl
}
add_action('init', 'enqueue_scripts_styles_init');

JQuery:

jQuery(function($){

send_data = function(item) {

$.post(ajax_object.ajaxurl, {

dataType: "json",
data: {'item' : item},
type: "POST",
cache: false

}).done(function(data, status, xml) {

var obj = jQuery.parseJSON(data);
alert(obj.success);

}).fail(function(jqXHR, textStatus, errorThrown) {
}).always(function() {
});

}$("#show").click(function() {

var $check = $('input#item');

if ($check.is(":checked")) {
alert("Yes");
send_data($check.val());
} else {
alert("box is not checked");
}});});

Это успешный метод, и он дает мне правильный продукт, добавленный в корзину, предупреждение «Да» плюс второе предупреждение «неопределено». Так что я думаю, что где-то AJAX сломан, так как я получаю предупреждение «undefined». Плюс, когда я меняю id, name, а также value на флажок, чтобы id="item" name="item" value="AddOnProduct" и полагаться на PHP, чтобы доставить добавить в корзину, я не получаю результатов от send_data = function(item) {}

Если я изменю submit кнопка для do_shortcode('[add_to_cart id="517"]'), Я получаю предупреждение о сбое «флажок не установлен», и в корзину добавляется только идентификатор продукта. Поэтому я думаю, что AJAX не настроен для одновременной обработки функции добавления в корзину и моего ajax. В конце концов, вот что должен делать финальный код:

    echo '
<form id="myform" action="">
Check this box:
<input type="checkbox" id="item" name="item" value="AddOnProduct" />
<div id="show">' . do_shortcode('[add_to_cart id="517"]') . '</div></form>';

PHP:

    function ajax_action_stuff() {
if (isset($_REQUEST['item'])) {
WC()->cart->add_to_cart( 16379 ); //2nd product
} else {
return;
}
}

add_action( 'wp_ajax_ajax_action', 'ajax_action_stuff' );
add_action( 'wp_ajax_nopriv_ajax_action', 'ajax_action_stuff' );

На (#show)click() ajax должен отправить идентификатор продукта в корзину и захватить второй идентификатор для отправки в корзину, если был отмечен «элемент». Я думаю, что если бы я мог успешно передать значение обратно в PHP, я мог бы выполнить команду в моей функции ajax. Это AJAX или шорткод в корзину?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector