Задать вопрос
Starck43
@Starck43
Full-stack разработчик (Python, React)

Как при смене карточки товара Woocommerce через ajax обновить скрипт отображения вариаций?

Нарисовалась следующая проблема: Перехожу между карточками товаров через ajax обработчик и обнаружил, что цены вариаций не появляются, точнее даже весь контейнер
<div class="woocommerce-variation single_variation"></div>
остается пустым. Есть ощущение, что скрипт woocommerce (add-to-cart-variation.js) не отрабатывает. Если это так, то как его заставить выполниться? Замечу, что с простыми товарами вопросов нет - цена появляется, но там скрипт и не нужен, вообщем-то.

Вот так выглядит страница после перехода:
5ec280c789b3a752985198.jpeg

Исходные данные:

functions.php
add_action( 'wp_ajax_post_loading', 'post_loading_callback' );
add_action( 'wp_ajax_nopriv_post_loading', 'post_loading_callback' );
function post_loading_callback() {

	$post_object = get_post($_POST['id']);
	setup_postdata($GLOBALS['post'] =& $post_object);

	get_template_part( 'content-single-product' );

	wp_die();
}


Нашел, что в variation.php прописан вывод этих данных, но как его заставить скрипт отработать этот кусок кода?
<script type="text/template" id="tmpl-variation-template">
	<div class="woocommerce-variation-description">{{{ data.variation.variation_description }}}</div>
	<div class="woocommerce-variation-price">{{{ data.variation.price_html }}}</div>
	<div class="woocommerce-variation-availability">{{{ data.variation.availability_html }}}</div>
</script>


Помогите, плиз, может уже кто-то решал подобное?
Могу еще ссылку на свой сайт дать для наглядности: https://artservice43.ru/mouldings/c230-cornice-mou...
  • Вопрос задан
  • 411 просмотров
Подписаться 2 Средний Комментировать
Решения вопроса 1
Starck43
@Starck43 Автор вопроса
Full-stack разработчик (Python, React)
Нашел решение самостоятельно, раз никто о не ответил. Ларчик легко открылся, но не сразу догадался куда нажать ).

Вообщем надо было перезагрузить скрипты, отвечающие за вывод вариаций с помощью jQuery функции getScript(). В моем случае это скрипты двух плагинов: Woocommerce и Variation Swatches

return $.ajax({
			url:  '/wp-admin/admin-ajax.php',
			data: data,
      cache: true,
			beforeSend: function(xhr) {
				$('.content').css('opacity', 0);
			},
			complete: function(response) {
				$.getScript(add_to_cart_js_url); //переменная с URL  скрипта объявлена в functions.php
				$.getScript(variation_swatches_js_url);  //переменная с URL скрипта объявлена в functions.php
        $('.content').css('opacity', 1);
			},
			success: function(data) {
				$('.content').html(data);
			},
		});


Functions.php:
<?php
add_action('wp_footer', function (){
	?>
	<script type="text/javascript">
		var add_to_cart_js_url = '<?=plugins_url("/woocommerce/assets/js/frontend/add-to-cart-variation.min.js");?>';
		var variation_swatches_js_url = '<?=plugins_url("/variation-swatches-for-woocommerce/assets/js/frontend.js");?>';
	</script>
	<?php
	}
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы