Крючок для кнопки AJAX "Добавить в корзину"?


У кого-нибудь здесь когда-либо возникала необходимость добавить кнопку AJAX "Добавить в корзину" (расположенную в архивах продуктов) в выводе пользовательского запроса?

Не могли бы вы поделиться крючком? Кажется, я не могу найти правильный вариант.

Author: Anriëtte Myburgh, 2012-06-19

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, поэтому просто вызовите ее напрямую.

 6
Author: EAMann, 2020-06-15 08:21:38