|
|
@ -275,137 +275,6 @@ add_action('wp_footer', 'add_facebook_pixel_events'); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Ваш код для custom_enqueue_ajax_add_to_cart остается без изменений |
|
|
|
|
|
|
|
add_action('wp_enqueue_scripts', 'custom_enqueue_ajax_add_to_cart'); |
|
|
|
|
|
|
|
function custom_enqueue_ajax_add_to_cart() { |
|
|
|
|
|
|
|
// Подключаем скрипт только на странице товара |
|
|
|
|
|
|
|
if (is_product()) { |
|
|
|
|
|
|
|
// Убедимся, что jQuery подключен |
|
|
|
|
|
|
|
wp_enqueue_script('jquery'); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Inline JavaScript с поддержкой jQuery.noConflict |
|
|
|
|
|
|
|
$ajax_script = " |
|
|
|
|
|
|
|
jQuery(document).ready(function($) { |
|
|
|
|
|
|
|
console.log('AJAX Add to Cart script loaded'); // Отладка: проверяем загрузку скрипта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Перехват клика по кнопке |
|
|
|
|
|
|
|
$('.single_add_to_cart_button').on('click', function(e) { |
|
|
|
|
|
|
|
e.preventDefault(); |
|
|
|
|
|
|
|
e.stopPropagation(); // Предотвращаем всплытие события |
|
|
|
|
|
|
|
console.log('Add to cart button clicked'); // Отладка: клик по кнопке |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var \$button = $(this); |
|
|
|
|
|
|
|
var \$form = \$button.closest('form.cart'); |
|
|
|
|
|
|
|
var product_id = \$button.val(); // Извлекаем product_id из value кнопки |
|
|
|
|
|
|
|
var quantity = \$form.find('input[name=\"quantity\"]').val() || 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Проверка на корректность product_id |
|
|
|
|
|
|
|
if (!product_id || isNaN(product_id)) { |
|
|
|
|
|
|
|
console.log('Invalid product_id:', product_id); // Отладка |
|
|
|
|
|
|
|
console.log('Error: Неверный ID товара'); |
|
|
|
|
|
|
|
\$button.removeClass('loading').prop('disabled', false); // Разблокируем кнопку |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Блокируем кнопку |
|
|
|
|
|
|
|
\$button.addClass('loading').prop('disabled', true); |
|
|
|
|
|
|
|
console.log('Sending AJAX request for product_id: ' + product_id + ', quantity: ' + quantity); // Отладка |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Подготовка данных |
|
|
|
|
|
|
|
var data = { |
|
|
|
|
|
|
|
action: 'woocommerce_ajax_add_to_cart', |
|
|
|
|
|
|
|
product_id: product_id, |
|
|
|
|
|
|
|
quantity: quantity |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Добавляем поле url, если есть |
|
|
|
|
|
|
|
var urlField = \$form.find('input[name=\"url\"]'); |
|
|
|
|
|
|
|
if (urlField.length) { |
|
|
|
|
|
|
|
data.url = urlField.val(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$.ajax({ |
|
|
|
|
|
|
|
type: 'POST', |
|
|
|
|
|
|
|
url: ajax_object.ajax_url, |
|
|
|
|
|
|
|
data: data, |
|
|
|
|
|
|
|
dataType: 'json', |
|
|
|
|
|
|
|
success: function(response) { |
|
|
|
|
|
|
|
console.log('AJAX response:', response); // Отладка |
|
|
|
|
|
|
|
if (response.success) { |
|
|
|
|
|
|
|
console.log('Товар добавлен в корзину'); // Уведомление в консоли |
|
|
|
|
|
|
|
// Обновляем фрагменты корзины |
|
|
|
|
|
|
|
if (response.data.fragments) { |
|
|
|
|
|
|
|
$.each(response.data.fragments, function(key, value) { |
|
|
|
|
|
|
|
console.log('Updating fragment:', key); // Отладка |
|
|
|
|
|
|
|
$(key).replaceWith(value); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$(document.body).trigger('wc_fragment_refresh'); |
|
|
|
|
|
|
|
$(document.body).trigger('added_to_cart', [response.data.fragments, response.data.cart_hash]); |
|
|
|
|
|
|
|
// Сбрасываем форму |
|
|
|
|
|
|
|
\$form[0].reset(); |
|
|
|
|
|
|
|
console.log('Form reset after successful add to cart'); // Отладка |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
console.log('Error: ' + (response.data.message || 'Ошибка при добавлении товара в корзину')); // Уведомление в консоли |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
error: function(xhr, status, error) { |
|
|
|
|
|
|
|
console.error('AJAX error:', status, error); // Отладка |
|
|
|
|
|
|
|
console.log('Error: Произошла ошибка при добавлении товара: ' + error); |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
complete: function() { |
|
|
|
|
|
|
|
console.log('AJAX request completed'); // Отладка |
|
|
|
|
|
|
|
\$button.removeClass('loading').prop('disabled', false); // Разблокируем кнопку |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Перехват отправки формы |
|
|
|
|
|
|
|
$('form.cart').on('submit', function(e) { |
|
|
|
|
|
|
|
e.preventDefault(); |
|
|
|
|
|
|
|
e.stopPropagation(); // Предотвращаем всплытие |
|
|
|
|
|
|
|
console.log('Form submit prevented'); // Отладка |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wp_add_inline_script('jquery', $ajax_script); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Передаем AJAX URL |
|
|
|
|
|
|
|
wp_localize_script('jquery', 'ajax_object', array( |
|
|
|
|
|
|
|
'ajax_url' => admin_url('admin-ajax.php') |
|
|
|
|
|
|
|
)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Inline CSS |
|
|
|
|
|
|
|
wp_enqueue_style('woocommerce-custom-styles', get_template_directory_uri() . '/style.css', array(), '1.0'); |
|
|
|
|
|
|
|
$custom_css = " |
|
|
|
|
|
|
|
.single_add_to_cart_button.loading { |
|
|
|
|
|
|
|
opacity: 0.5; |
|
|
|
|
|
|
|
cursor: not-allowed; |
|
|
|
|
|
|
|
position: relative; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.single_add_to_cart_button.loading:after { |
|
|
|
|
|
|
|
content: ''; |
|
|
|
|
|
|
|
display: inline-block; |
|
|
|
|
|
|
|
width: 16px; |
|
|
|
|
|
|
|
height: 16px; |
|
|
|
|
|
|
|
border: 2px solid #fff; |
|
|
|
|
|
|
|
border-radius: 50%; |
|
|
|
|
|
|
|
border-top-color: transparent; |
|
|
|
|
|
|
|
animation: spin 1s linear infinite; |
|
|
|
|
|
|
|
position: absolute; |
|
|
|
|
|
|
|
right: 10px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
@keyframes spin { |
|
|
|
|
|
|
|
100% { |
|
|
|
|
|
|
|
transform: rotate(360deg); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
"; |
|
|
|
|
|
|
|
wp_add_inline_style('woocommerce-custom-styles', $custom_css); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Отключаем кэширование для страниц товаров |
|
|
|
// Отключаем кэширование для страниц товаров |
|
|
|
add_action('template_redirect', function() { |
|
|
|
add_action('template_redirect', function() { |
|
|
|
if (is_product()) { |
|
|
|
if (is_product()) { |
|
|
|