Php WooCommerce-仅选择一个属性时是否更改产品图像?

Php WooCommerce-仅选择一个属性时是否更改产品图像?,php,wordpress,woocommerce,plugins,customization,Php,Wordpress,Woocommerce,Plugins,Customization,这与在线服装店有关。我们为不同的产品设置了颜色和尺寸属性,例如,一个产品可能有两种变体;绿色/任意尺寸和黑色/任意尺寸 每个变体都有相应颜色的产品图像,但目前图像不会切换,除非选择颜色和尺寸(我知道这就是Woo开箱即用的方式)。我们想让它,使图像切换时,只是选择了一种颜色 这可行吗?如果是,我应该看哪些挂钩/过滤器/操作?您读过这篇文章吗: 如果你这样做了(我想是的),请阅读这里: 另一个错误: 我已经解决了这个问题,我没有在产品级别设置图像 试试这个:我们也遇到了这个问题,我设法用JavaSc

这与在线服装店有关。我们为不同的产品设置了颜色和尺寸属性,例如,一个产品可能有两种变体;绿色/任意尺寸和黑色/任意尺寸

每个变体都有相应颜色的产品图像,但目前图像不会切换,除非选择颜色和尺寸(我知道这就是Woo开箱即用的方式)。我们想让它,使图像切换时,只是选择了一种颜色

这可行吗?如果是,我应该看哪些挂钩/过滤器/操作?

您读过这篇文章吗: 如果你这样做了(我想是的),请阅读这里: 另一个错误:

我已经解决了这个问题,我没有在产品级别设置图像


试试这个:

我们也遇到了这个问题,我设法用JavaScript解决了这个问题。此代码假定您正在使用和。如果不使用这些插件,则需要调整第6行的jQuery选择器以及将图像应用到页面的方法。它也仅适用于第一个产品选项,例如颜色而非尺寸

    var image_to_show = '';
    var variations = JSON.parse($(".variations_form").attr("data-product_variations"));
    if(variations) {
        var first_attr = Object.keys(variations[0].attributes)[0];
        // when swatch button is clicked
        $("ul[data-attribute_name='"+first_attr+"'] li").click(function() {
            var choice = $(this).attr("data-value");
            var found = false;
            // loop variations JSON
            for(const i in variations) {
                if(found) continue;
                if(variations.hasOwnProperty(i)) {
                    // if first attribute has the same value as has been selected
                    if (choice === variations[i].attributes[Object.keys(variations[0].attributes)[0]]) {
                        // change featured image
                        image_to_show = variations[i].image_src;
                        found = true;
                    }
                }
            }
        });

        // after woo additional images has changed the image, change it again
        jQuery(".variations_form").on("wc_additional_variation_images_frontend_image_swap_done_callback", function() {
            if(image_to_show.length) {
                $(".attachment-shop_single").attr("src", image_to_show).removeAttr("srcset");
            }
        });

    }
工作原理:当对第一个选项进行选择时,循环遍历product_variations JSON对象并找到具有匹配值的变体。从第一个匹配中获取图像,并将其应用于页面上的特色图像

您需要将图像应用于每个变体,才能使其正常工作


注意:这不是OP的精确解决方案,但为其他想要实现这一目标的人提供了一个方向。

感谢您的回复。我们已经为每个产品变体分配了图像。您链接的文章(第二个链接)中描述的错误是特定于Themlr的,我们在这里面临的不是错误,我们希望更改默认行为。变体样例和照片将属性选择从下拉列表更改为图像/图标,这与我们尝试实现的功能不同。是否找到解决此问题的方法?