Подскажите, как добавить свою информацию по доставке?
Прикрутили к корзине доставку от Яндекса, (не через виджет). Сами делаем запрос и получаем информацию, выводим её в корзине. Как теперь её передать в сам заказ?
Артем Абрамович, ты не понял)) я имею ввиду в какие переменные пеиредавать данные то) то что собрать в DATA информацию это понятно, вопрос мой в том как записать именно выбранную доставку из списка.
в инпутах самого WC name="shipping_method[0]" value="flat_rate:10" к примеру, это именно идентификатор заранее созданной доставка в панели WC, а у меня же свои службы от яндекса и цены динамические и типы доставок разные я вот и не могу понять как передать в заказ именно мои службы доставки с ценами
Ну и дергай через .val() по клику на инпут данные, да и все.
Хотя впиливать сразу json в значение инпута - не очень идея. Лучше распарсить строку при генерации хтмл, чем потом придется это делать при передаче в заказ
Yuriy, именно так и может) как хошь так и называй, просто потом в заказе по этим переменным данные будешь получать.
Все пишется в один сериализованный массив post_data, как ты свои данные в нем назовешь, разницы нет. Главное потом выдергивать по нужным значениям
Артем Абрамович, спасибо, подскажи что-то нифига не получается отловить событие по переключению методов доставки, вот твой код на картинке самый первый, от чего он вообще срабатывает? ты просто событие js повесил на radio или я чего-то не понимаю?
На первой картинке там по клику на Якарте все срабатывает, там есть отдельный эвент на подобное. Тебе подойдет или клик или чанже, но есть еще триггеры Вукомерсаupdated_checkout updated_shipping_method и сам отрабатывающий аякс. Так что можно вешатся или посе того как отработал аякс или на события updated_shipping_method
Насколько помню хук woocommerce_update_order_review довольно поздно срабатывает. Попробуй использовать woocommerce_thankyou там уже будет созданный заказ можно перезаписать данные
Артем Абрамович, не подскажешь такой момент, в JS есть такой код и у тебя он тоже в первом примере, там есть такая переменная wc_checkout_params, дело в том что она работает только на странице /checkout/
а вот на первой странице корзины /cart/ этой переменной нет, соответственно undefined
но на странице /cart/ есть wc_cart_params, подставляю за место первого и получаю в запросе ajax
/wp-admin/admin-ajax.php 403 (Forbidden)
я так понимаю неверный action= woocommerce_update_order_review для wc_cart_params.update_shipping_method_nonce
ставлю action=woocommerce_update_shipping_method и вешаю в php action на обновление доставки, но ничего не меняется
if (typeof wc_checkout_params !== 'undefined' ) {
var woo_checkout = wc_checkout_params;
}else if (typeof wc_cart_params !== 'undefined' ){
var woo_checkout = wc_cart_params;
}else {
return false;
}
var data = {
action: 'woocommerce_update_order_review',
security: woo_checkout.update_order_review_nonce,
post_data: $('form.checkout').serialize()
};
//console.log(data);
var xhr = $.ajax({
type: 'POST',
url: woo_checkout.ajax_url,
data: data,
success: function(response) {
console.log(response);
jQuery( 'form.checkout' ).trigger( 'update' );
},
error: function(code){
console.log('ERROR');
}
});
}
Yuriy, хм.А зачем на корзине данные в заказ передавать? Там еще нет заказа как такового, там сессия корзины только.
И да, на корзине такое работать не будет, надо использовать другие экшены. Точное название не помню, открой исходный код корзины и посмотри что там передается
Артем Абрамович, да вся фигня в том, что выбор доставок предлагается на этой странице)) короче сделал загрузку я.доставки листа с условием is_checkout, на корзине просто предлагает выбрать способы, а уже на checkout идёт запрос на сервисы доставок если выбрана я.доставка.