我正在定制woocommerce主题。 我使用钩子动作woocommerce坚持使用循环产品。
要在循环中调用/包含缩略图,我们称之为
<?php do_action('woocommerce_before_shop_loop_item_title'); ?>
出现缩略图图像。
我很困惑<img src"" ....
位置在哪里?
如何编辑该代码?
由于
答案 0 :(得分:3)
钩子woocommerce_before_shop_loop_item_title
从this function code加载图片:
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文件中。经过测试和工作。
所以现在你只需要自定义函数内的代码......
答案 1 :(得分:1)
LoicTheAztec的答案非常好,但我认为它包含一个很小但很关键的错误。我们删除了标准输出(echo)钩子,并没有添加过滤器(它返回结果),而是添加了一个动作,因此,我们应该做echo。那个狡猾的/看不见的错误已经把我的时间吃光了。 :)
// there is
return $product ? $product->get_image( $image_size ) : '';
// should be
echo $product ? $product->get_image( $image_size ) : '';