例如,我有类别咖啡机,以及一个用于咖啡机单一产品模板的模板,但是对于类别咖啡,我想具有不同的single-product.php模板,如何实现呢?我无法访问此帖子http://www.woothemes.com/support-forum/?viewtopic=83667,但是它有类似的问题,WordPress中的页面和类别很简单,但是如何在woocommerce中做到这一点?
例如,我有类别咖啡机,以及一个用于咖啡机单一产品模板的模板,但是对于类别咖啡,我想具有不同的single-product.php模板,如何实现呢?我无法访问此帖子http://www.woothemes.com/support-forum/?viewtopic=83667,但是它有类似的问题,WordPress中的页面和类别很简单,但是如何在woocommerce中做到这一点?
Answers:
您可以将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 );
我使用产品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' );
}
我通过在主题的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);