针对特定类别的产品的不同模板。WooCommerce


8

例如,我有类别咖啡机,以及一个用于咖啡机单一产品模板的模板,但是对于类别咖啡,我想具有不同的single-product.php模板,如何实现呢?我无法访问此帖子http://www.woothemes.com/support-forum/?viewtopic=83667,但是它有类似的问题,WordPress中的页面和类别很简单,但是如何在woocommerce中做到这一点?

Answers:



4

您可以将single-product.php更改为重定向到正确的模板,具体取决于当前产品的产品类别。

为此,您需要将single-product.php复制到主题的woocommerce文件夹中。将其重命名为single-product-default.php或其他任何名称。创建另一个副本,并将其称为single-product-coffee.php。您可以对此进行任何更改。

然后,在您的single-product.php中,您可以添加一个简单的条件,以重定向到适当的单一产品,即 .php。

if( has_term( 'coffee-maker', 'product_cat' ) ) {
    $file = 'single-product-coffee.php';
} else {
    $file = 'single-product-default.php';
}

global $woocommerce;

load_template( $woocommerce->template_url . $file );

3

我使用产品ID在single-product.php中进行了重定向。

然后在覆盖的woocommerce文件夹(../your-theme/woocommerce/)中创建不同的产品模板,例如single-product-product1.php和默认模板(single-product-default.php),该模板只是该模板的副本以前的single-product.php)。

if($post->ID == '103'){
wc_get_template_part( 'single-product-product1' ); 
} else{
wc_get_template_part( 'single-product-default' );
}

必须登录并对此投票!谢谢,救了我!
蒂亚戈

1

我通过在主题的woocommerce模板中为产品创建模板(名为“ content-single-product-{$ product_cat} .php”)并添加“ wc_get_template_part”过滤器来搜索以该产品命名的模板来完成此操作(Woocommerce 2.1)类别。现在,您可以按产品类别覆盖内容单一产品模板:

function my_custom_product_template($template, $slug, $name) {
    if ($name === 'single-product' && $slug === 'content') {
        global $product_cat;
        $temp = locate_template(array("{$slug}-{$name}-{$product_cat}.php", WC()->template_path() . "{$slug}-{$name}-{$product_cat}.php"));
        if($temp) {
           $template = $temp;
        }
    }
    return $template;
}

add_filter('wc_get_template_part', 'my_custom_product_template', 10, 3);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.