Пользовательский макет для страницы одного продукта - Woocommerce - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь создать собственный макет для одной из наших страниц продукта в Woocommerce. Я искал и следовал так много учебников, но ни один из них не работает для меня. Я скопировал файл «single-product.php» и поместил его в свою активную дочернюю тему в папку «woocommerce». Затем я продублировал это и переименовал в «single-product-landing.php».

Затем я разместил следующий код на своей странице functions.php:

add_filter( 'template_include',     'custom_single_product_template_include', 10 );

function custom_single_product_template_include( $template ) {
if ( is_product() && ( has_term( 'custom', 'product_cat') ) ) {
$template = get_stylesheet_directory() . '/woocommerce/single-product-landing.php';
 } 
return $template;
}

Затем я попытался изменить предметы в single-product-landing.php, но ничего не изменилось, поэтому его нельзя было поднять. Чтобы подтвердить, у меня есть продукт, отнесенный к категории «пользовательские».

Я должен также добавить, что мой продукт является «переменным» продуктом, я не уверен, что это как-то повлияет на это.

РЕДАКТИРОВАТЬ: я нашел следующий код в моем файле 'single.php' - я думаю, что это может мешать. Проблема в том, что, если я удаляю это, на моих страницах ничего не отображается (даже те, которые не затронуты новым шаблоном):

 <?php
      if(get_theme_mod('product_layout') == 'custom') {
        wc_get_template_part( 'content', 'single-product-custom' );
      } else {
        wc_get_template_part( 'content', 'single-product' );
      }
  ?>

Любая идея, как я могу изменить это, чтобы показывать содержимое, но не переоценивать изменение шаблона, которое я пытаюсь сделать?

1 Ответ

0 голосов
/ 31 августа 2018
  1. Шаблоны страниц загружаются после запуска template_filter, поэтому добавление этого кода в файл шаблона страницы не будет иметь никакого эффекта. Для этого поместите тот же код в functions.php.

  2. 566 в конце строки add_filter относится к приоритету загрузки фильтра, а не к идентификатору категории. Проще говоря, чем выше число, тем позже будет загружен фильтр.

  3. Наконец, ваше утверждение if можно немного упростить с помощью функций Woocommerce - if ( is_product() && ( has_term( 'custom', 'product_cat') ) ) { - не имеет большого значения, но оно более аккуратное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...