我想知道是否有办法在WooCommerce的购物车和结帐页面中显示所有子产品的父产品缩略图。做这样的事情有过滤器吗?
答案 0 :(得分:1)
购物车中的所有缩略图均通过woocommerce_cart_item_thumbnail
filter:
$thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
但是,如果变体没有自己的缩略图,WooCommerce会自动显示其parent's thumbnail:
/**
* Gets the main product image.
*
* @param string $size (default: 'shop_thumbnail')
* @return string
*/
public function get_image( $size = 'shop_thumbnail', $attr = array() ) {
if ( $this->variation_id && has_post_thumbnail( $this->variation_id ) ) {
$image = get_the_post_thumbnail( $this->variation_id, $size, $attr );
} elseif ( has_post_thumbnail( $this->id ) ) {
$image = get_the_post_thumbnail( $this->id, $size, $attr );
} elseif ( ( $parent_id = wp_get_post_parent_id( $this->id ) ) && has_post_thumbnail( $parent_id ) ) {
$image = get_the_post_thumbnail( $parent_id, $size , $attr);
} else {
$image = wc_placeholder_img( $size );
}
return $image;
}
如果您没有看到这一点,那么您可能已经过时了主题模板。
编辑
有了更多信息,您显然是指分组产品。你总是可以判断一个产品是否已经分组了#34;因为post_parent
设置为分组产品的产品ID。作为post_product
为0的顶级产品。您可以在传递给我提到的第一个过滤器的数据中找到post_parent
信息:woocommerce_cart_item_thumbnail
以提供以下信息:
add_filter( 'woocommerce_cart_item_thumbnail', 'so_30736886_cart_item_thumbnail', 10, 3 );
function so_30736886_cart_item_thumbnail( $image, $cart_item, $cart_item_key ){
if( isset( $cart_item['product_id'] ) && isset( $cart_item['data'] ) && $cart_item['data']->post->post_parent > 0 ){
$_parent = wc_get_product( $cart_item['data']->post->post_parent );
$image = $_parent->get_image();
}
return $image;
}
如果产品有post_parent
,那么我们会获得父级" Group"的缩略图。产品。