Woocommerceテーマをカスタマイズしています。私はフックアクションwoocommerceを使用してループ製品に固執しました。
サムネイル画像を呼び出してループに含めるために、このフックを呼び出します
<?php do_action('woocommerce_before_shop_loop_item_title'); ?>
そしてサムネイル画像が表示されます。 <img src"" ....
の場所はどこですか?そのコードを編集する方法は?
ありがとう
フック_woocommerce_before_shop_loop_item_title
_から画像をロードします この関数コード :
_if ( ! function_exists( 'woocommerce_template_loop_product_thumbnail' ) ) {
/**
* Get the product thumbnail for the loop.
*/
function woocommerce_template_loop_product_thumbnail() {
echo woocommerce_get_product_thumbnail(); // WPCS: XSS ok.
}
}
_
ご覧のとおり、 woocommerce_get_product_thumbnail()
function を使用しています。
_if ( ! function_exists( 'woocommerce_get_product_thumbnail' ) ) {
/**
* Get the product thumbnail, or the placeholder if not set.
*
* @param string $size (default: 'woocommerce_thumbnail').
* @param int $deprecated1 Deprecated since WooCommerce 2.0 (default: 0).
* @param int $deprecated2 Deprecated since WooCommerce 2.0 (default: 0).
* @return string
*/
function woocommerce_get_product_thumbnail( $size = 'woocommerce_thumbnail', $deprecated1 = 0, $deprecated2 = 0 ) {
global $product;
$image_size = apply_filters( 'single_product_archive_thumbnail_size', $size );
return $product ? $product->get_image( $image_size ) : '';
}
}
_
これがあなたの質問に答え、あなたの混乱を取り除くことを願っています。
ループ製品イメージのカスタマイズ
これで、次のコマンドを使用して、このデフォルト関数をフックから削除し、独自のカスタム関数を追加できます。
_remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action( 'woocommerce_before_shop_loop_item_title', 'custom_loop_product_thumbnail', 10 );
function custom_loop_product_thumbnail() {
global $product;
$size = 'woocommerce_thumbnail';
$image_size = apply_filters( 'single_product_archive_thumbnail_size', $size );
return $product ? $product->get_image( $image_size ) : '';
}
_
コードは、アクティブな子テーマ(またはアクティブなテーマ)のfunction.phpファイルに入ります。テストされ、動作します。
したがって、関数内のコードをカスタマイズする必要があります…
LoicTheAztecの答えは非常に良いですが、小さな、しかし重大なエラーが1つ含まれていると思います。標準出力(エコー)フックを削除し、フィルター(結果を返す)ではなくアクションを追加したので、エコーを実行する必要があります。その巧妙な/目に見えないエラーは私の時間を十分に食べました。 :)
// there is
return $product ? $product->get_image( $image_size ) : '';
// should be
echo $product ? $product->get_image( $image_size ) : '';