WooCommerce: Изменение шаблона для страницы отдельного товара
Я знаю, что есть возможность изменить структуру/дизайн страницы товара, редактируя файл single-product.php
в дочерней теме.
Изменения в этом файле повлияют на все страницы товаров.
Но как изменить файл шаблона для конкретных страниц товаров? Как это можно сделать с пользовательским шаблоном страницы? Изначально на странице отдельного товара нет выпадающего списка шаблонов, как это есть для обычной страницы (см. изображение).
Как изменить шаблон конкретной страницы товара?

WooCommerce не входит в тему обсуждения, так как это плагин и не относится напрямую к WordPress, но вы можете скопировать шаблон single-product.php в папку WooCommerce вашей дочерней темы. Измените имя файла и отредактируйте его, затем используйте single_template
или template_include
с правильным условным тегом.
single_template
function 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', 'get_custom_post_type_template' );
template_include
add_filter( 'template_include', 'portfolio_page_template', 99 );
function portfolio_page_template( $template ) {
if ( is_page( 'slug' ) ) {
$new_template = locate_template( array( 'single-template.php' ) );
if ( '' != $new_template ) {
return $new_template ;
}
}
return $template;
}

Вам необходимо изучить иерархию шаблонов WordPress, чтобы понять, как это работает.
Одиночная запись (Single Post) #
Шаблон одиночной записи используется для отображения отдельной записи. WordPress использует следующий порядок поиска:
1. single-{post-type}.php — Сначала WordPress ищет шаблон для конкретного типа записи. Например, для типа записи product WordPress будет искать файл single-product.php.
2. single.php — Затем WordPress переходит к шаблону single.php.
3. index.php — В конце, как упоминалось выше, WordPress использует шаблон index.php.
Страница (Page) #
Шаблон, используемый для отображения статической страницы (тип записи page). Обратите внимание, что в отличие от других типов записей, page является особым для WordPress и использует следующий порядок:
1. Пользовательский шаблон — Шаблон страницы, назначенный для конкретной страницы. См. get_page_templates().
2. page-{slug}.php — Если ярлык (slug) страницы recent-news, WordPress будет искать файл page-recent-news.php.
3. page-{id}.php — Если ID страницы 6, WordPress будет искать файл page-6.php.
4. page.php
5. index.php
Для конкретного ID вы можете использовать шаблон page-{id}.php
.
