カスタムクエリ投稿の出力にAJAXカートに追加ボタン(製品アーカイブにあるもの)を追加する必要がある人はいますか?
フックを共有してもいいですか。正しいものが見つからないようです。
コードを掘り下げて、見つけるのはとても簡単です。
まず、 製品アーカイブに使用されるテンプレートを見てください - /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
sを呼び出すので、直接それを呼び出すだけです。