我已经对add-to-cart
按钮创建了自定义AJAX调用,并且得到了正确的数据作为响应。这个声音听起来很奇怪,但是我在哪里可以访问这些数据?我是否需要创建其他钩子才能访问它们?
这是我的代码:
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调用中添加的数据又是什么?