Diferentes plantillas de productos para categorías específicas en WooCommerce
Por ejemplo, tengo una categoría de máquinas de café y una plantilla para la página individual del producto de máquina de café, pero para la categoría de café quiero tener una plantilla single-product.php diferente, ¿cómo implementar esto? No tengo acceso a esta publicación http://www.woothemes.com/support-forum/?viewtopic=83667 pero tiene una pregunta similar. Con páginas y categorías en WordPress es simple, pero ¿cómo hacerlo en WooCommerce?
Podrías cambiar tu single-product.php para que solo sea una redirección a la plantilla correcta dependiendo de la categoría del producto actual.
Para hacerlo, copiarías single-product.php a la carpeta woocommerce de tu tema. Renómbralo como single-product-default.php o cualquier otro nombre. Crea otra copia y llámala single-product-coffee.php. Puedes hacer los cambios que desees en esta última.
Luego, en tu single-product.php podrías agregar un condicional simple para redirigir al archivo single-product-algo.php correspondiente.
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 );

No, parece que esto es para el listado de productos (archive-product), no para la página de producto individual (single-product). Solo echa un vistazo al código para confirmarlo.

Hice una redirección en single-product.php usando el ID del producto.
Luego creé diferentes plantillas de producto en la carpeta sobreescrita de woocommerce (../tu-tema/woocommerce/) como single-product-product1.php y la plantilla por defecto (single-product-default.php, que simplemente era una copia del anterior single-product.php).
if($post->ID == '103'){
wc_get_template_part( 'single-product-product1' );
} else{
wc_get_template_part( 'single-product-default' );
}

He logrado esto (Woocommerce 2.1) creando una plantilla para el producto en los templates de woocommerce de mi tema llamada 'content-single-product-{$product_cat}.php' y añadiendo un filtro 'wc_get_template_part' que busca plantillas nombradas según la categoría del producto. Ahora puedes sobrescribir la plantilla content-single-product por categoría de producto:
function my_custom_product_template($template, $slug, $name) {
// Verifica si es la plantilla de contenido de producto individual
if ($name === 'single-product' && $slug === 'content') {
global $product_cat;
// Busca plantillas específicas por categoría
$temp = locate_template(array("{$slug}-{$name}-{$product_cat}.php", WC()->template_path() . "{$slug}-{$name}-{$product_cat}.php"));
if($temp) {
$template = $temp;
}
}
return $template;
}
// Añade el filtro para personalizar las plantillas
add_filter('wc_get_template_part', 'my_custom_product_template', 10, 3);
