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

时间:2012-08-13 作者:Anatoliy

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

4 个回复
SO网友:helgatheviking

你可以改变你的单一产品。php只是重定向到正确的模板,这取决于当前产品的产品类别。

要做到这一点,您需要复制单个产品。php到主题的woocommerce文件夹。将其重命名为单产品默认值。php或任何东西。创建另一个副本并称之为单品咖啡。php。你可以对这个做任何你想做的改变。

然后在您的单个产品中。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 );

SO网友:alberto

制作新模板并将其命名为:taxonomy-product\\u cat-Your\\u category\\u product\\u slug。PHPA就这么简单

SO网友:Gecko Room

我在单个产品中进行了重定向。php使用产品ID。

然后在覆盖的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\' );
}

SO网友:benedict_w

我通过在我的主题的Woocommerce模板中创建一个名为“content single product-{$product\\u cat}的产品模板来实现这一点(Woocommerce 2.1)。并添加“wc\\u get\\u template\\u part”过滤器,用于搜索以产品类别命名的模板。现在,您可以按产品类别覆盖内容单一产品模板:

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);

结束

相关推荐

从非核心php文件访问BloInfo、Get_Option和plugins_url

我正在创建一个插件,插件目录中有一个php文件,可以通过自定义重写url直接访问该文件。我需要这个文件能够使用标题中提到的三个功能。目前,我正在包括wp负载。php文件,它使我能够访问所有这些函数。然而,我一直在读到不应该包括wp负载,因为它可能不总是在同一个位置,而且它包括可能不需要的wordpress文件。这就是我如何包含wp负载:$wp_base = explode($_SERVER[\'PHP_SELF\'], $_SERVER[\'SCRIPT_FILENAME\']); require