Pesquisando o código, é bem simples de encontrar.
Primeiro, veja o modelo usado para arquivos de produtos - /templates/archive-product.php
. Entre outras coisas, configura as consultas regulares e começa a criar a marcação da página.
Mas quando ele realmente começa a passar por cada produto, ele delega o trabalho para /templates/loop-shop.php
. Este modelo é carregado para cada produto e cria uma listagem usando o seguinte código:
<?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); ?>
A parte que nos interessa é a última ação: woocommerce_after_shop_loop_item
. Está ligado em /woocommerce_template_actions.php
à função woocommerce_template_loop_add_to_cart()
.
Indo ainda mais fundo e parece que esta função é a que você precisa.
Como adicioná-lo
A maneira mais fácil de usar essa função é chamá-lo diretamente. Só sei que isso requer parâmetros, $post
e $_product
. O código a seguir o chamaria bem:
global $post; // Assuming it's already set up
$_product = &new woocommerce_product( $post->ID );
woocommerce_template_loop_add_to_cart( $post, $_product );
A própria função chama seu próprio echo
s, então apenas chame diretamente.