Woocommerce 在购物车和结账页面中获取父产品缩略图过滤器

Woocommerce 在购物车和结账页面中获取父产品缩略图过滤器,woocommerce,Woocommerce,我想知道是否有一种方法可以在WooCommerce中显示购物车和结账页面中所有子产品的父产品缩略图。是否有用于执行类似操作的筛选器?购物车中的所有缩略图都通过woocommerce\u cart\u item\u缩略图运行: 但是,如果变体没有自己的缩略图,WooCommerce将自动显示其: 如果你没有看到这一点,那么你可能有过时的主题模板 编辑 有了进一步的信息,您显然是指分组产品。当产品的post\u父项设置为分组产品的产品ID时,您始终可以判断产品是否“分组”。作为0的后期产品的顶级产品

我想知道是否有一种方法可以在WooCommerce中显示购物车和结账页面中所有子产品的父产品缩略图。是否有用于执行类似操作的筛选器?

购物车中的所有缩略图都通过
woocommerce\u cart\u item\u缩略图运行:

但是,如果变体没有自己的缩略图,WooCommerce将自动显示其:

如果你没有看到这一点,那么你可能有过时的主题模板

编辑

有了进一步的信息,您显然是指分组产品。当产品的
post\u父项
设置为分组产品的产品ID时,您始终可以判断产品是否“分组”。作为0的
后期产品的顶级产品。您可以在传递给我提到的第一个过滤器的数据中找到
post\u parent
信息:
woocommerce\u cart\u item\u缩略图
,以得出以下结果:

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\u父产品
,那么我们将得到父“组”产品的缩略图

谢谢你的回复。实际上,我正在为一个组的每个链接产品设置特色图片。但特色图片是纯色.jpg,以显示对应于每个链接产品的颜色。但在购物车页面中,我想展示用其父功能图像替换子产品缩略图。到目前为止,似乎找不到任何人尝试这样做。我提到的第一个过滤器仍然与您的案例相关,可能会将此信息添加到您的原始问题中。
/**
 * 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;
}
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;
}