You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce单品页实现缩略图切换同步显示对应图片说明?

解决方案

步骤1:替换原有静态说明代码

把你现有的函数替换成以下代码,它会完成:输出动态说明容器、预加载所有产品图片的说明数据、初始显示主图说明。

function add_dynamic_product_image_caption() {
    global $product;
    
    // 获取当前产品的所有图片ID(包含主图)
    $attachment_ids = $product->get_gallery_image_ids();
    array_unshift($attachment_ids, get_post_thumbnail_id());
    
    // 收集每张图片的说明文本
    $captions = [];
    foreach ($attachment_ids as $id) {
        $caption = get_post($id)->post_excerpt;
        $captions[$id] = $caption ? $caption : '';
    }
    
    // 输出说明容器,初始显示主图说明
    echo '<p style="text-align: center;" class="image-caption" id="dynamic-image-caption">' . get_post(get_post_thumbnail_id())->post_excerpt . '</p>';
    
    // 将说明数据传递给前端JS
    wp_add_inline_script('jquery', '
        const productImageCaptions = ' . json_encode($captions) . ';
    ');
}
add_action('woocommerce_product_thumbnails', 'add_dynamic_product_image_caption');

步骤2:添加动态切换的JS逻辑

新增以下函数,注入监听图片切换的脚本,实现说明同步更新:

function enqueue_image_caption_script() {
    if (is_product()) { // 仅在单品页面加载脚本
        wp_add_inline_script('jquery', '
            jQuery(document).ready(function($) {
                // 监听缩略图点击事件(适配WooCommerce默认的图片组件)
                $(document).on("click", ".flex-control-thumbs li img, .woocommerce-product-gallery__trigger", function() {
                    // 获取当前激活图片的ID
                    var currentImgId = $(this).data("attachment_id") || $(".woocommerce-product-gallery__image.flex-active-slide img").data("attachment-id");
                    
                    // 更新说明文本
                    $("#dynamic-image-caption").text(productImageCaptions[currentImgId] || "");
                });
                
                // 适配键盘左右键切换图片的场景(可选增强)
                $(document).on("keydown", ".woocommerce-product-gallery", function(e) {
                    if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
                        setTimeout(() => {
                            var currentImgId = $(".woocommerce-product-gallery__image.flex-active-slide img").data("attachment-id");
                            $("#dynamic-image-caption").text(productImageCaptions[currentImgId] || "");
                        }, 100);
                    }
                });
            });
        ');
    }
}
add_action('wp_enqueue_scripts', 'enqueue_image_caption_script');

代码说明

  • PHP部分:通过$product->get_gallery_image_ids()获取产品所有图册ID,合并主图ID后遍历收集每张图片的post_excerpt(即图片说明),将数据转为JSON传递给前端,同时输出初始的主图说明容器。
  • JS部分:监听缩略图点击和键盘切换事件,获取当前激活图片的ID,从预加载的说明数组中取出对应文本更新到容器,适配WooCommerce默认的FlexSlider图片组件,无需额外插件。

内容的提问来源于stack exchange,提问作者kirtan ajudiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:22:18