可变产品的 WooCommerce 动态缩略图图像

Posted

技术标签:

【中文标题】可变产品的 WooCommerce 动态缩略图图像【英文标题】:WooCommerce dynamic thumbnail images for variable products 【发布时间】:2019-02-04 07:49:23 【问题描述】:

我正在尝试创建一个设置可变产品缩略图的函数。目前我必须进入后端并手动应用图像,但我想要更动态的东西。

例如,假设我有一个名为 Lamp 的变量产品,里面有三个子产品。每个子产品都相同,但颜色不同(蓝色、绿色、黄色)。现在我想要的是可变产品与内部的第一个变体具有相同的图像,但是如果将黄色滤色器应用于商店页面,我想获取该变体的图像并将其显示为可变缩略图。

我几乎已经创建了这个功能,但是如果语句对于不同的产品可能是正确的,并且我最终得到了产品的多个缩略图,则会出现问题。

如何改进此功能?

remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10);
add_action( 'woocommerce_before_shop_loop_item_title', 'set_product_image', 10);

function set_product_image() 
    global $product;

    if( $product->is_type('variable') )
        foreach ( $product->get_visible_children() as $variation_id )
            $variation = wc_get_product( $variation_id );

            $product_colour = strtolower( $variation->get_attribute('colour') );

            $filter_colour = $_GET['filter_colour'];

            if( $product_colour == $filter_colour)
                echo $variation->get_image( array(300, 300) );

            else if( $product_colour != $filter_colour )
                // echo $variation->get_image( array(300, 300) );

            
        
    else if( $product->is_type('simple') )
        if ( has_post_thumbnail() ) 
            echo $product->get_image( array(300, 300) );
        
    

【问题讨论】:

【参考方案1】:

试试这个代码:

if( $product->is_type('variable') )
    // image of first variation
    $default_image = '';
    foreach ( $product->get_visible_children() as $variation_id )            
        $variation = wc_get_product( $variation_id );
        $product_colour = strtolower( $variation->get_attribute('colour') );
        // set image of first variation
        if( $default_image == '' )
            $default_image = $variation->get_image( array(300, 300) );
        
        $filter_colour = $_GET['filter_colour'];

        if( $product_colour == $filter_colour)
            // if filter applied, echo and return
            echo $variation->get_image( array(300, 300) );
            return;
        
    
    // filter not applied, return default image
    echo $default_image ;

【讨论】:

我自己创建了一些类似的东西,虽然你的代码使用较少,我会试试看

以上是关于可变产品的 WooCommerce 动态缩略图图像的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce产品缩略图位置

特定页面的不同 Woocommerce 产品缩略图大小

在 WooCommerce 我的帐户订单列表上显示产品缩略图

woocommerce 目录图像缩略图模糊

Woocommerce 在悬停图像叠加层上显示产品标题

使缩略图垂直后,图像比 flex-viewport 更宽