WooCommerce комплект продуктов ajax добавить в корзину - PullRequest
0 голосов
/ 06 июня 2019

Мой код не добавляется в корзину с пакетами продуктов AJAX, но работает с простыми и переменными продуктами.

Если я отключаю функцию вызова AJAX, она работает, но обновляет страницу.

$(document).on('click', '.single_add_to_cart_button', function (e) {
    e.preventDefault();
    var $thisbutton = $(this),
        $form = $thisbutton.closest('form.cart'),
        id = $thisbutton.val(),
        product_qty = $form.find('input[name=quantity]').val() || 1,
        product_id = $form.find('input[name=add-to-cart]').val() || id,
        variation_id = $form.find('input[name=variation_id]').val() || 0;

    var data = {
      action: 'woocommerce_ajax_add_to_cart',
      product_id: product_id,
      product_sku: '',
      quantity: product_qty,
      variation_id: variation_id,
    };

    $(document.body).trigger('adding_to_cart', [$thisbutton, data]);

    $.ajax({
      type: 'post',
      url: wc_add_to_cart_params.ajax_url,
      data: data,
      beforeSend: function (response) {
        $thisbutton.removeClass('added').addClass('loading');
      },
      complete: function (response) {
        $thisbutton.addClass('added').removeClass('loading');
      },
      success: function (response) {
        if (response.error & response.product_url) {
          window.location = response.product_url;
          return;
        } else {
          $(document.body).trigger('added_to_cart', [response.fragments, response.cart_hash, $thisbutton]);
          // if ($( "#mydiv" ).hasClass('disabled')) {
          //   $('#sidebar-right-hidden').addClass('is-active');
          // }
          $('#sidebar-right-hidden').addClass('is-active');
          $('#addToCartModal').modal('hide');
        }
      },
    });
    return false;
  });
add_action('wp_ajax_woocommerce_ajax_add_to_cart', 'woocommerce_ajax_add_to_cart');
add_action('wp_ajax_nopriv_woocommerce_ajax_add_to_cart', 'woocommerce_ajax_add_to_cart');

function woocommerce_ajax_add_to_cart() {
    $product_id = apply_filters('woocommerce_add_to_cart_product_id', absint($_POST['product_id']));
    $quantity = empty($_POST['quantity']) ? 1 : wc_stock_amount($_POST['quantity']);
    $variation_id = absint($_POST['variation_id']);
    $passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $product_id, $quantity);
    $product_status = get_post_status($product_id);

    if ($passed_validation && WC()->cart->add_to_cart($product_id, $quantity, $variation_id) && 'publish' === $product_status) {
    do_action('woocommerce_ajax_added_to_cart', $product_id);

    if ('yes' === get_option('woocommerce_cart_redirect_after_add')) {
      wc_add_to_cart_message(array($product_id => $quantity), true);
    }

    WC_AJAX :: get_refreshed_fragments();
    } else {
    $data = array(
      'error' => true,
      'product_url' => apply_filters('woocommerce_cart_redirect_after_error', get_permalink($product_id), $product_id)
    );

    echo wp_send_json($data);
    }
    wp_die();
}

Я получаю сообщение об ошибке: "test" cannot be added to your cart. Please choose "Black Belt" options... Я полагаю, это не совместимо с комплектами продуктов. И я получаю это из admin-ajax.php в консоли:

{error: true, product_url: "https://5050.local/produs/test/"}
error: true
product_url: "https://5050.local/produs/test/"

Код должен добавить товар в корзину.

Как мне заставить его работать?

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