Wordpress / Woocommerce如何从自定义AJAX调用中获取数据

时间:2018-09-20 07:33:09

标签: javascript php ajax wordpress woocommerce

我已经对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调用中添加的数据又是什么?

0 个答案:

没有答案