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