Template diverso per prodotti di categorie specifiche in WooCommerce
Ad esempio ho una categoria macchine da caffè e un template per il singolo prodotto macchina da caffè, ma per la categoria caffè voglio avere un template single-product.php diverso, come posso implementarlo? Non ho accesso a questo post http://www.woothemes.com/support-forum/?viewtopic=83667 ma contiene una domanda simile. Con le pagine e le categorie in WordPress è semplice, ma come farlo in WooCommerce?
Potresti modificare il tuo single-product.php per reindirizzare semplicemente al template corretto in base alla categoria di prodotto del prodotto corrente.
Per farlo, copia single-product.php nella cartella woocommerce del tuo tema. Rinominalo in single-product-default.php o qualsiasi altro nome. Crea un'altra copia e chiamala single-product-coffee.php. Puoi apportare tutte le modifiche che desideri a questo file.
Quindi, nel tuo single-product.php, puoi aggiungere una semplice condizione per reindirizzare al file single-product-qualcosa.php appropriato.
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, sembra che questo sia per l'elenco dei prodotti (archive-product), non per la pagina del singolo prodotto (single-product). Basta dare un'occhiata al codice per confermarlo.

Ho implementato un reindirizzamento in single-product.php utilizzando l'ID del prodotto.
Poi ho creato diversi template di prodotto nella cartella woocommerce sovrascritta (../your-theme/woocommerce/) come single-product-product1.php e quello predefinito (single-product-default.php, che era semplicemente una copia del precedente single-product.php).
if($post->ID == '103'){
wc_get_template_part( 'single-product-product1' );
} else{
wc_get_template_part( 'single-product-default' );
}

Ho realizzato questo (Woocommerce 2.1) creando un template per il prodotto nei template woocommerce del mio tema chiamato 'content-single-product-{$product_cat}.php' e aggiungendo un filtro 'wc_get_template_part' che cerca template nominati in base alla categoria del prodotto. Ora puoi sovrascrivere il template content-single-product per categoria prodotto:
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);
