Пользовательский шаблон продукта и хуки действий в 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 );
Он должен работать.