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

WooCommerce主题开发:单产品页展示同供应商分类产品轮播

实现WooCommerce单个产品页显示同一供应商分类的产品轮播

我来帮你搞定这个需求,其实实现起来分几步就好,下面是具体的方案,你可以根据自己的主题结构调整:

1. 确认供应商分类的Slug

首先你要明确自己的供应商分类的分类别名(slug),假设你的供应商分类slug是suppliers(如果不是,记得替换成你实际的分类slug)。

2. 在单个产品页插入轮播代码

推荐用WooCommerce的钩子来实现,不用直接修改主题模板文件(避免主题更新丢失代码),把以下代码添加到子主题的functions.php文件里:

add_action('woocommerce_after_single_product_summary', 'display_supplier_products_carousel', 25);
function display_supplier_products_carousel() {
    global $product;
    
    // 获取当前产品关联的供应商分类
    $supplier_terms = get_the_terms($product->get_id(), 'suppliers'); // 替换成你的供应商分类slug
    
    if (!$supplier_terms || is_wp_error($supplier_terms)) {
        return; // 若产品未分配供应商分类,直接跳过不显示轮播
    }
    
    $supplier_term = reset($supplier_terms); // 取第一个关联的供应商分类(假设一个产品只属于一个供应商)
    $supplier_id = $supplier_term->term_id;
    
    // 查询该供应商分类下的其他产品,排除当前正在查看的产品
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => 6, // 轮播显示的产品数量,可自行调整
        'post__not_in' => array($product->get_id()),
        'tax_query' => array(
            array(
                'taxonomy' => 'suppliers', // 替换成你的供应商分类slug
                'field' => 'term_id',
                'terms' => $supplier_id,
            ),
        ),
        'orderby' => 'rand', // 随机排序,也可改为date(按发布时间)等规则
    );
    
    $supplier_products = new WP_Query($args);
    
    if ($supplier_products->have_posts()) :
        ?>
        <div class="supplier-products-carousel">
            <h2>来自<?php echo esc_html($supplier_term->name); ?>的其他产品</h2>
            <div class="carousel-items">
                <?php while ($supplier_products->have_posts()) : $supplier_products->the_post(); ?>
                    <div class="carousel-item">
                        <a href="<?php the_permalink(); ?>">
                            <?php the_post_thumbnail('woocommerce_thumbnail'); ?>
                            <h3><?php the_title(); ?></h3>
                            <?php wc_get_template_part('loop/price'); ?>
                        </a>
                    </div>
                <?php endwhile; ?>
            </div>
        </div>
        <?php
        wp_reset_postdata(); // 重置查询,避免影响后续内容
    endif;
}

3. 给列表添加轮播功能

上面的代码只是输出了产品列表,要做成轮播还需要添加样式和JS。这里用常用的Slick轮播库来实现:

引入Slick资源(如果主题未自带)

继续在子主题functions.php里添加:

add_action('wp_enqueue_scripts', 'enqueue_slick_scripts');
function enqueue_slick_scripts() {
    if (is_product()) { // 仅在单个产品页加载资源
        wp_enqueue_style('slick-css', 'https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css');
        wp_enqueue_style('slick-theme-css', 'https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick-theme.css');
        wp_enqueue_script('slick-js', 'https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.min.js', array('jquery'), '1.8.1', true);
    }
}

初始化轮播

同样在functions.php里添加初始化代码:

add_action('wp_footer', 'init_supplier_carousel');
function init_supplier_carousel() {
    if (is_product()) {
        ?>
        <script>
            jQuery(document).ready(function($) {
                $('.supplier-products-carousel .carousel-items').slick({
                    slidesToShow: 3, // 桌面端一次显示3个产品
                    slidesToScroll: 1,
                    autoplay: true,
                    autoplaySpeed: 3000,
                    arrows: true,
                    dots: false,
                    // 响应式设置,适配移动端
                    responsive: [
                        {
                            breakpoint: 768,
                            settings: {
                                slidesToShow: 2
                            }
                        },
                        {
                            breakpoint: 480,
                            settings: {
                                slidesToShow: 1
                            }
                        }
                    ]
                });
            });
        </script>
        <?php
    }
}

4. 自定义样式适配主题

可以根据自己的主题风格,在子主题的style.css里添加样式调整:

.supplier-products-carousel {
    margin: 40px 0;
    padding: 0 15px;
}
.supplier-products-carousel h2 {
    margin-bottom: 20px;
    text-align: center;
    font-size: 20px;
}
.carousel-item {
    margin: 0 10px;
    text-align: center;
}
.carousel-item img {
    margin-bottom: 10px;
    width: 100%;
    height: auto;
}
.carousel-item h3 {
    font-size: 16px;
    margin-bottom: 5px;
}

注意事项

  • 务必把代码中的suppliers替换成你实际的供应商分类slug(在WP后台“产品-分类”里可以查看)。
  • 如果你的产品可能属于多个供应商分类,可以修改代码中的reset($supplier_terms)部分,改成遍历所有关联的供应商分类并展示对应产品。
  • 推荐使用子主题修改代码,避免主题更新时丢失自定义内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:08:28