Template diferit pentru produse în funcție de categorie specifică în WooCommerce
De exemplu, am categoria aparate de cafea și un template pentru pagina individuală a aparatului de cafea, dar pentru categoria cafea vreau să am un template single-product.php diferit. Cum pot implementa acest lucru? Nu am acces la această postare http://www.woothemes.com/support-forum/?viewtopic=83667, dar are o întrebare similară. Cu paginile și categoriile în WordPress este simplu, dar cum se poate face acest lucru în WooCommerce?
Ai putea modifica fișierul single-product.php pentru a face o redirecționare către șablonul corect în funcție de categoria produsului curent.
Pentru a face asta, copiezi single-product.php în folderul woocommerce al temei tale. Redenumește-l în single-product-default.php sau orice alt nume. Creează o altă copie și numește-o single-product-coffee.php. Poți face orice modificări dorești în acest fișier.
Apoi, în single-product.php poți adăuga o condiție simplă pentru a redirecționa către fișierul single-product-ceva.php corespunzător.
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 );

Nu, se pare că aceasta este pentru lista de produse (archive-product), nu pentru pagina unui singur produs (single-product). Doar uită-te la cod pentru a confirma.

Am realizat o redirecționare în single-product.php folosind ID-ul produsului.
Apoi am creat șabloane diferite pentru produse în directorul suprascris al WooCommerce (../your-theme/woocommerce/), cum ar fi single-product-product1.php și cel implicit (single-product-default.php, care a fost pur și simplu o copie a fișierului anterior single-product.php).
if($post->ID == '103'){
wc_get_template_part( 'single-product-product1' );
} else{
wc_get_template_part( 'single-product-default' );
}

Am realizat acest lucru (Woocommerce 2.1) prin crearea unui șablon pentru produs în folderul de șabloane woocommerce al temei mele, numit 'content-single-product-{$product_cat}.php' și adăugarea unui filtru 'wc_get_template_part' care caută șabloane denumite după categoria produsului. Acum puteți suprascrie șablonul content-single-product în funcție de categoria produsului:
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);
