Крючок для кнопки AJAX "Добавить в корзину"?
У кого-нибудь здесь когда-либо возникала необходимость добавить кнопку AJAX "Добавить в корзину" (расположенную в архивах продуктов) в выводе пользовательского запроса?
Не могли бы вы поделиться крючком? Кажется, я не могу найти правильный вариант.
1 answers
Покопавшись в коде, его довольно просто найти.
Во-первых, посмотрите на шаблон, используемый для архивов продуктов - /templates/archive-product.php
. Помимо прочего, он настраивает регулярные запросы и начинает создавать разметку страницы.
Но когда он фактически начинает циклически просматривать каждый продукт, он делегирует работу /templates/loop-shop.php
. Этот шаблон загружается для каждого продукта и создает список, используя следующий код:
<?php do_action('woocommerce_before_shop_loop_item'); ?>
<a href="<?php the_permalink(); ?>">
<?php do_action('woocommerce_before_shop_loop_item_title', $post, $_product); ?>
<h3><?php the_title(); ?></h3>
<?php do_action('woocommerce_after_shop_loop_item_title', $post, $_product); ?>
</a>
<?php do_action('woocommerce_after_shop_loop_item', $post, $_product); ?>
Часть, о которой мы заботимся, это последнее действие: woocommerce_after_shop_loop_item
. Он подключен в /woocommerce_template_actions.php
к функции woocommerce_template_loop_add_to_cart()
.
Копаем еще глубже, и похоже, что эта функция именно та, которая вам нужна.
Как его добавить
Самый простой способ использовать эту функцию - вызвать ее напрямую. Просто знайте, что для этого требуются параметры $post
и $_product
. Следующий код назвал бы это просто отлично:
global $post; // Assuming it's already set up
$_product = &new woocommerce_product( $post->ID );
woocommerce_template_loop_add_to_cart( $post, $_product );
Сама функция вызывает свои собственные echo
, поэтому просто вызовите ее напрямую.