• Никакой политики на форуме. Иначе - бан!
  • Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!
  • Темы озаглавленные с маленькой буквы или капсом удаляются без предупреждения!

Пользовательский шаблон для продукта

ss2o

Новичок
Добрый день.
Подскажите, можно для товара woocommerce задать пользовательский шаблон. По аналогии
/**
* The template name: Custom Template for single product
*/
 

ADv

Гуру
Местный
Добрый день.
Подскажите, можно для товара woocommerce задать пользовательский шаблон. По аналогии
/**
* The template name: Custom Template for single product
*/
А применять его как будете?
Выбора шаблона для товара нет по дефолту.
Вариант: берем single-product.php и переименовываем в single-[productid].php
Если для одного товара.
 

ss2o

Новичок
В том и проблема что товар не один (хотя не очень много) но все равно. К тому же нужно для разных типов товара выводить разные шаблоны.
Видимо на woocommerc не получиться это реализовать.
 

ADv

Гуру
Местный
В том и проблема что товар не один (хотя не очень много) но все равно. К тому же нужно для разных типов товара выводить разные шаблоны.
Видимо на woocommerc не получиться это реализовать.
А если так
PHP:
function devise_get_custom_post_type_template($single_template) {
 global $post;

 if ($post->post_type == 'product') {
      $single_template = dirname( __FILE__ ) . '/single-template.php';
 }
 return $single_template;
}
add_filter( 'single_template', 'devise_get_custom_post_type_template' );

Если товар, тогда подгружаем шаблон.
Просто добавьте еще одно условие на категорию, или массив с ID нужных товаров
 

ss2o

Новичок
Так не срабатывает.
Пробовал так, вроде работает
add_filter( 'wc_get_template', 'custom_wc_template', 10, 5 );
function custom_wc_templates( $located, $template_name, $args, $template_path, $default_path ) {
// The specific product ID
$product_id = 5555;

// The custom template file name and path
$custom_template_name = 'single-product/meta-custom.php';

if( is_product() && get_the_ID() == 37 && $template_name == 'single-product/meta.php'){
$located = trailingslashit( get_stylesheet_directory() ) . 'woocommerce/' . $custom_template_name;
}
return $located;
}
---
Но. Перечислять по id продукты через запятую не получается (все ломается), как подключить еще десяток продуктов через такую конструкцию
 

ADv

Гуру
Местный
Так не срабатывает.
Пробовал так, вроде работает
add_filter( 'wc_get_template', 'custom_wc_template', 10, 5 );
function custom_wc_templates( $located, $template_name, $args, $template_path, $default_path ) {
// The specific product ID
$product_id = 5555;

// The custom template file name and path
$custom_template_name = 'single-product/meta-custom.php';

if( is_product() && get_the_ID() == 37 && $template_name == 'single-product/meta.php'){
$located = trailingslashit( get_stylesheet_directory() ) . 'woocommerce/' . $custom_template_name;
}
return $located;
}
---
Но. Перечислять по id продукты через запятую не получается (все ломается), как подключить еще десяток продуктов через такую конструкцию
Положить в массив. array ('1', '2')
 
  • Like
Реакции: ss2o
Сверху Снизу