Le crochet pour le bouton Ajouter au panier AJAX?

4

Quelqu'un a-t-il déjà eu besoin d'ajouter le bouton AJAX Add to Cart (celui situé dans les archives du produit) dans une sortie de requête personnalisée?

Est-ce que ça vous dérange de partager le crochet? Je n'arrive pas à trouver le bon.

    
posée Anriëtte Myburgh 19.06.2012 - 23:14

1 réponse

5

En fouillant dans le code, il est assez simple à trouver.

Tout d'abord, , examinez le modèle utilisé pour les archives de produits - /templates/archive-product.php . Entre autres choses, il configure les requêtes habituelles et commence à construire le balisage de la page.

Mais lorsqu'il commence réellement à parcourir en boucle chaque produit, il délègue le travail à /templates/loop-shop.php . Ce modèle est chargé pour chaque produit et construit une liste à l'aide du code suivant:

<?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); ?>

La partie qui nous importe est la dernière action: woocommerce_after_shop_loop_item . Il est relié dans /woocommerce_template_actions.php à la fonction woocommerce_template_loop_add_to_cart() .

Si vous creusez encore plus profondément, il semble que cette fonction est celle dont vous avez besoin.

Comment l'ajouter

Le moyen le plus simple d’utiliser cette fonction est de l’appeler directement. Sachez simplement que cela nécessite des paramètres, $post et $_product . Le code suivant l’appellerait parfaitement:

global $post; // Assuming it's already set up
$_product = &new woocommerce_product( $post->ID );

woocommerce_template_loop_add_to_cart( $post, $_product );

La fonction appelle elle-même son echo s, donc appelez-la directement.

    
réponse donnée EAMann 20.06.2012 - 00:57

Lire d'autres questions sur les étiquettes