web-dev-qa-db-ja.com

のためのフック AJAX カートに入れるボタン?

カスタムクエリ投稿の出力にAJAXカートに追加ボタン(製品アーカイブにあるもの)を追加する必要がある人はいますか?

フックを共有してもいいですか。正しいものが見つからないようです。

4

コードを掘り下げて、見つけるのはとても簡単です。

まず、 製品アーカイブに使用されるテンプレートを見てください - /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 );

関数自体はそれ自身のechosを呼び出すので、直接それを呼び出すだけです。

5
EAMann