Разные шаблоны товаров для определенной категории WooCommerce
Например, у меня есть категория кофемашин и один шаблон для страницы отдельного товара кофемашины, но для категории кофе я хочу иметь другой шаблон single-product.php, как это реализовать? У меня нет доступа к этому посту http://www.woothemes.com/support-forum/?viewtopic=83667, но там похожий вопрос. С страницами и категориями в WordPress это просто, но как сделать это в WooCommerce?
Вы можете изменить свой файл single-product.php, чтобы он просто перенаправлял на правильный шаблон в зависимости от категории текущего товара.
Для этого скопируйте single-product.php в папку woocommerce вашей темы. Переименуйте его в single-product-default.php или как-то иначе. Создайте еще одну копию и назовите ее single-product-coffee.php. В этот файл вы можете внести любые необходимые изменения.
Затем в вашем single-product.php вы можете добавить простое условие для перенаправления на соответствующий single-product-что-то.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 );

Нет, похоже, это для страницы списка товаров (archive-product), а не для страницы отдельного товара (single-product). Просто взгляните на код, чтобы подтвердить это.

Я реализовал перенаправление в single-product.php, используя ID товара.
Затем создал различные шаблоны товаров в переопределенной папке woocommerce (../ваша-тема/woocommerce/), такие как single-product-product1.php и шаблон по умолчанию (single-product-default.php, который был просто копией предыдущего single-product.php).
if($post->ID == '103'){
wc_get_template_part( 'single-product-product1' );
} else{
wc_get_template_part( 'single-product-default' );
}

Я реализовал это (для WooCommerce 2.1), создав шаблон товара в папке woocommerce templates моей темы с именем 'content-single-product-{$product_cat}.php' и добавив фильтр 'wc_get_template_part', который ищет шаблоны по названию категории товара. Теперь вы можете переопределять шаблон content-single-product для каждой категории товаров:
// Функция для кастомного шаблона товара
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);
