@hypero

Новая информация в карточку товара Woocommerce?

Всем привет.

Имеется страница с товарами Woocommerce. Как добавить какой-либо новый блок в карточке товара и на странице товара?
Знаю, что это делается хуками, например через woocommerce_single_product_summary, но в таком случае информация добавляется после всего контейнера. Как сделать, чтобы вывести информацию допустим после цены?

Спасибо.
  • Вопрос задан
  • 1068 просмотров
Решения вопроса 1
Palych_tw
@Palych_tw
Типа веб-разработчик
Все шаблоны Woocommerce хранятся в папке с плагином в templates. Все эти шаблоны именованы так, что бы можно было догадаться за что они отвечают. Каждый из этих шаблонов вы можете переопределить в своей теме и менять как угодно, о чем написано в каждом файле :
<?php
/**
 * The template for displaying product content in the single-product.php template
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/content-single-product.php.
 *

Если сильно менять файл не нужно, можно ограничиться хуками. В каждом файле хорошо задокументировано, какие хуки и с каким приоритетом вызываются. Например файл /templates/content-single-product.php

Вот фрагмент, где выводится инфа о товаре
<div class="summary entry-summary">
		<?php
			/**
			 * Hook: woocommerce_single_product_summary.
			 *
			 * @hooked woocommerce_template_single_title - 5
			 * @hooked woocommerce_template_single_rating - 10
			 * @hooked woocommerce_template_single_price - 10
			 * @hooked woocommerce_template_single_excerpt - 20
			 * @hooked woocommerce_template_single_add_to_cart - 30
			 * @hooked woocommerce_template_single_meta - 40
			 * @hooked woocommerce_template_single_sharing - 50
			 * @hooked WC_Structured_Data::generate_product_data() - 60
			 */
			do_action( 'woocommerce_single_product_summary' );
		?>
	</div>

в комментарии написаны все хуки в экшне woocommerce_single_product_summary и их приоритеты. Если вам нужно что-то вывести между ценой(10) и цитатой(20) - нужно создать хук с приоритетом между 10 и 20. Если нужно удалить что-то просто пишите remove_action, если поменять местами, то удаляете хуки и регистрируете их же, но с другими приоритетами.

Например:
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10);
remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20);
 
add_action('woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 10);
add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 20);

Меняет местами цену и цитату.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы