Wordpress / Woocommerce как получить данные из пользовательского вызова AJAX - PullRequest
0 голосов
/ 20 сентября 2018

Я создал пользовательский вызов 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...