Задача
Переместить «цену товара» под «краткое описание товара».
Чтобы изменить порядок блоков нужно
- найти функцию которая выводит этот блок
- открепить от хука
- прикрепить к новому хуку с нужным приоритетом
Как найти функцию
С помощью исходного кода страницы
С помощью карты хуков страницы товара.
С помощью различный плагинов, которые выводят хуки. Например Simply Show Hooks
С помощью WooCommerce Code Reference
Открываем файл, отвечающий за вывод страницы товара
plugins/woocommerce/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>
Нас интересуют строка:
* @hooked woocommerce_template_single_price - 10
Она означает что функция woocommerce_template_single_price выполняется на хуке woocommerce_single_product_summary с приоритетом 10.
Нам нужно чтобы функция woocommerce_template_single_price() была выполнена после woocommerce_template_single_excerpt().
Мы выяснили что, для этого нужно изменить приоритет с 10 на 25.
Просто так изменить приоритет нельзя.
Нужно удалить выполнение этой функции совсем и заново прикрепить к хуку.
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price' );
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 25);
Всё готово!
Таким способом мы можем изменять порядок любых блоков. Откреплять и прикреплять функции к любым хукам.