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

WordPress+WooCommerce多商品模板调用:第三个模板如何加载?

Fixing the Third Product Category Template Call in WooCommerce

Hey there! Let's get that third product category template working for you. Since you already have template switching logic in single-product.php for two categories, extending it to the third is super straightforward.

First, let's reference your existing code (it likely looks something like this):

// Existing template switching code in single-product.php
if ( has_term( 'category-slug-1', 'product_cat' ) ) {
    get_template_part( 'templates/single-product', 'category1' );
} elseif ( has_term( 'category-slug-2', 'product_cat' ) ) {
    get_template_part( 'templates/single-product', 'category2' );
} else {
    // Fallback to default WooCommerce single product template
    wc_get_template_part( 'content', 'single-product' );
}

To add your third template, just extend the conditional chain:

Replace the existing code with this, swapping out placeholders with your actual category slug and template path:

// Updated code with third category support
if ( has_term( 'your-third-category-slug', 'product_cat' ) ) {
    get_template_part( 'templates/single-product', 'category3' ); // Path to your third template file
} elseif ( has_term( 'category-slug-1', 'product_cat' ) ) {
    get_template_part( 'templates/single-product', 'category1' );
} elseif ( has_term( 'category-slug-2', 'product_cat' ) ) {
    get_template_part( 'templates/single-product', 'category2' );
} else {
    wc_get_template_part( 'content', 'single-product' );
}

A cleaner, scalable alternative (great for future categories)

If you anticipate adding more product categories later, using an array to map slugs to templates keeps your code organized:

// Scalable template mapping for easy future updates
$category_template_map = array(
    'category-slug-1' => 'templates/single-product-category1',
    'category-slug-2' => 'templates/single-product-category2',
    'your-third-category-slug' => 'templates/single-product-category3',
);

// Get slugs of categories the current product belongs to
$product_category_slugs = wp_get_post_terms( get_the_ID(), 'product_cat', array( 'fields' => 'slugs' ) );

// Load the first matching template
foreach ( $product_category_slugs as $slug ) {
    if ( isset( $category_template_map[$slug] ) ) {
        get_template_part( $category_template_map[$slug] );
        return; // Stop after loading the correct template
    }
}

// Fallback to default if no match found
wc_get_template_part( 'content', 'single-product' );

Critical checks to avoid issues:

  • Confirm your category slug: Find this in WordPress Admin → Products → Categories → Edit your third category (it's the value under "Slug", not the display name).
  • Verify template file paths: If your third template is single-product-category3.php in your theme's templates folder, get_template_part( 'templates/single-product', 'category3' ) is correct. If it's in your theme root, use get_template_part( 'single-product', 'category3' ) instead.
  • Check for syntax errors: A missing semicolon or misspelled variable can break the template—always test changes on a staging site first if possible.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 06:54:51