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

У меня есть дочерняя тема из Storefront, и у меня есть настраиваемые шаблоны страниц для домашней страницы и других страниц без проблем.

Я создаю собственный макет для страниц Woocommerce и использую content-single-product.php для отдельной страницы продукта с пользовательским кодом в файле, например:

<div class="wc-product-images">
    <?php do_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images'); ?>
</div>

<div class="wc-product-description">
    <?php the_content(); ?>     
</div>

Вопрос 1: Правильно ли я называю Контент Woocommerce с помощью do_action() в файле шаблона? У меня есть определенный макет и я не могу следовать макетам крючка в соответствии с файлом по умолчанию

Вопрос 2: Когда я звоню:

<?php 
    do_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products' );
?>

Я получаю описание продукта со смежными продуктами, и на самом деле мне нужно создать div только с соответствующими продуктами.

Как я могу назвать это правильно, без описания?

Любая помощь приветствуется.

1 ответ

Решение

Вы делаете путаницу, оригинал do_action( 'woocommerce_before_single_product_summary' ) включает точку входа в woocommerce content-single-product.php шаблон, где add_action() используется для подключения других шаблонов с помощью функций:

  • woocommerce_show_product_sale_flash() (с приоритетом крюка 10)
  • woocommerce_show_product_images() (с приоритетом крюка 20)

Поэтому, если вы хотите включить только изображение продукта в свой пользовательский шаблон, вам придется создать свой собственный хук:

<div class="wc-product-images">
    <?php do_action( 'woocommerce_before_single_product_summary_custom' ); ?>
</div>

<div class="wc-product-description">
    <?php the_content(); ?>     
</div>

Затем вы добавите это в файл function.php вашей активной дочерней темы (или активной темы):

add_action( 'woocommerce_before_single_product_summary_custom', 'woocommerce_show_product_images', 20 );

Это должно работать как задумано.


Но вы можете использовать в своем пользовательском шаблоне оригинальный хук, если вам не нужны какие-либо другие настройки хука... В этом случае у вас будет только это:

<div class="wc-product-images">
    <?php do_action( 'woocommerce_before_single_product_summary' ); ?>
</div>

<div class="wc-product-description">
    <?php the_content(); ?>     
</div>

Дополнение: Связано с вашим комментарием (относительно сопутствующих товаров).

Чтобы включить связанные продукты в свой пользовательский шаблон, добавьте в него этот блок (с пользовательским хуком):

<div class="wc-product-related">
    <?php do_action( 'custom_after_single_product_summary' ); ?>
</div>

Затем вы добавите это в файл function.php вашей активной дочерней темы (или активной темы):

add_action( 'custom_after_single_product_summary', 'woocommerce_output_related_products', 20 );

Он должен работать.

Другие вопросы по тегам