WooCommerce按类别定制主题

时间:2014-05-12 16:35:00

标签: wordpress woocommerce

我正在尝试为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进行更改时,它们会显示出来。

为什么我无法定位我的产品类别?

提前致谢!

2 个答案:

答案 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术语