Diferentes plantillas de productos para categorías específicas en WooCommerce

13 ago 2012, 15:26:55
Vistas: 42.3K
Votos: 9

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?

0
Todas las respuestas a la pregunta 4
0

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 );
17 mar 2013 22:05:47
2

Crea la nueva plantilla y nómbrala: taxonomy-product_cat-tu_slug_de_categoria_de_producto.php tan simple como esto

24 ago 2012 12:46:33
Comentarios

Esta es la respuesta, aunque no sea la aceptada.

Allen Gingrich Allen Gingrich
6 abr 2018 20:09:02

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.

Buzut Buzut
12 jun 2020 11:59:51
1

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' );
}
5 jul 2013 20:29:54
Comentarios

¡Tuve que iniciar sesión y dar mi voto a esto! ¡Gracias, me salvaste!

Tiago Tiago
31 mar 2020 18:59:01
0

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);
19 dic 2014 14:00:41