WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

For example i have category coffee machines, and one template for coffee machine single product template, but for category coffee i want to have different single-product.php template, how to implement this? i haven't access to this post http://www.woothemes.com/support-forum/?viewtopic=83667 but it have similar question, with pages and categories in WordPress it simple, but how to do it in woocommerce?

share|improve this question

Make the new template and name it: taxonomy-product_cat-Your_category_product_slug.php as simple as this

share|improve this answer

I made a redirection in single-product.php using the product ID.

Then created different product templates in the overriden woocommerce folder (../your-theme/woocommerce/) such as single-product-product1.php and the default one (single-product-default.php, which simply was a copy of the previous single-product.php).

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

You could change your single-product.php to just be a redirect to the correct template depending on what product category the current product it.

To do so you'd copy single-product.php to your theme's woocommerce folder. Rename it to single-product-default.php or anything. Create another copy and call it single-product-coffee.php. You can make whatever changes you'd like to make to this one.

Then in your single-product.php you could add a simple conditional to redirect to the appropriate single-product-something.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 );
share|improve this answer

I have done this (Woocommerce 2.1) by creating a template for the product in my theme's woocommerce templates named 'content-single-product-{$product_cat}.php' and adding a 'wc_get_template_part' filter that searches for templates named after the product category. Now you can override the content-single-product template by product category:

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);
share|improve this answer

protected by toscho Oct 9 '13 at 21:09

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.