【问题标题】:WooCommerce dynamic thumbnail images for variable products可变产品的 WooCommerce 动态缩略图图像
【发布时间】: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) );
        }
    }
}

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案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 ;
    }
    

    【讨论】:

    • 我自己创建了一些类似的东西,虽然你的代码使用较少,我会试试看
    猜你喜欢
    • 2021-11-10
    • 2019-02-09
    • 2020-11-22
    • 2014-12-05
    • 1970-01-01
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多