Я создал пользовательский вызов AJAX для моей кнопки add-to-cart
и в ответ получаю правильные данные.Это звучит странно, но где мне получить доступ к этим данным?Нужно ли создавать какой-то дополнительный хук, чтобы иметь к ним доступ?
Вот мой код:
function add_this_shit_to_cart() {
ob_start();
$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) );
$quantity = empty( $_POST['quantity'] ) ? 1 : apply_filters( 'woocommerce_stock_amount', $_POST['quantity'] );
$chosen_date = $_POST['data-chosen-date'];
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $chosen_date );
if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $chosen_date ) ) {
do_action( 'woocommerce_ajax_added_to_cart', $product_id );
if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) {
wc_add_to_cart_message( $product_id );}
WC_AJAX::get_refreshed_fragments();}
else {
$this->json_headers();
$data = array(
'error' => true,
'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id )
);
echo json_encode( $data );
}
die();
}
add_action( 'wp_ajax_add_this_shit_to_cart', 'add_this_shit_to_cart' );
add_action( 'wp_ajax_nopriv_add_this_shit_to_cart', 'add_this_shit_to_cart' );
И мой JS-файл:
$(".add_to_cart_button").on("click", e => {
let currentItem = e.currentTarget;
let orderDate = $(currentItem).attr("data-chosen-date");
let quantity = $(currentItem).attr("data-quantity");
let product_id = $(currentItem).attr("data-product_id");
var ajaxscript = {
ajax_url: "/wp-admin/admin-ajax.php"
};
$.ajax({
url: ajaxscript.ajax_url,
method: "post",
dataType: "json",
data: {
action: "add_this_shit_to_cart",
product_id: product_id,
quantity: quantity,
chosen_date: orderDate
},
success: function(response) {
console.log("resp: ", response);
},
error: function(err) {
console.log(err);
}
});
});
Так какКак уже упоминалось, я получил правильные данные в ответе, но я не знаю, где взять эти данные корзины, поэтому я, например, использую их в файле cart.php
.
Может кто-нибудь может сказать мне, где найти эти данные, а также, возможно, также, как создать новый массив и передать каждый продукт тому массиву, который добавляется с данными из вызова ajax?