我正在尝试为WooCommerce中的产品类别创建特定的Woo模板。
我试图按照这里的说明操作,但它们对我不起作用。 Woocommerce single product - template by categories
我也发现了这个,但无法让它发挥作用。 http://wordpress.org/support/topic/plugin-woocommerce-excelling-ecommerce-a-custom-single-product-template
在我的主题中,我有一个woocommerce文件夹,其中包含我想要覆盖的特定模板文件。
theme/woocommerce/single-product.php
theme/woocommerce/content-single-product.php
theme/woocommerce/content-single-product-custom-1.php
这是single-product.php
的一部分<?php if (is_product_category( 'custom-1')) {
wc_get_template_part( 'content', 'single-product-custom-1' );
}
elseif (is_product_category( 'promise') {
wc_get_template_part( 'content', 'single-product-custom-2' );
}
else{
wc_get_template_part( 'content', 'single-product' );
}
?>
我已经在我想要定位的特定产品上设置了自定义1类别。
当我编辑content-single-product-custom-1.php时没有任何变化。但是,当我对content-single-product.php进行更改时,它们会显示出来。
为什么我无法定位我的产品类别?
提前致谢!
答案 0 :(得分:1)
问题在于is_product_category()与is_category()或is_tax() Wordpress函数的行为相同,这意味着它会检查类别归档页面(在本例中是自定义分类法)存档页面)正在显示。并且您在单个帖子页面中,您可以使用has_term()之类的函数(以检查当前帖子是否具有任何给定的术语)或get_the_terms()(以检索附加到的分类法的术语)在WooCommeerce中,分类是'product_cat'。
<?php
if ( has_term( 'custom-1', 'product_cat' ) ) {
wc_get_template_part( 'content', 'single-product-custom-1' );
} elseif ( has_term( 'promise', 'product_cat' ) ) {
wc_get_template_part( 'content', 'single-product-custom-2' );
} else {
wc_get_template_part( 'content', 'single-product' );
}
?>
答案 1 :(得分:0)
将此添加到functions.php文件中,以包含product body类中的product_cat_CATEGORYNAME项。
function woo_custom_taxonomy_in_body_class( $classes ){
if( is_singular( 'product' ) )
{
$custom_terms = get_the_terms(0, 'product_cat');
if ($custom_terms) {
foreach ($custom_terms as $custom_term) {
$classes[] = 'product_cat_' . $custom_term->slug;
}
}
}
return $classes;
}
add_filter( 'body_class', 'woo_custom_taxonomy_in_body_class' );
现在可以引用product_cat术语