Refguser в принципе показал как экшенами и хуками пользоваться и это хороший подход.
Для замороченной верстки можно пойти другим путем - переопределять сами шаблоны вывода
https://developer.woocommerce.com/docs/theming/the... если на пальцах, то берете шаблон который вам надо изменить и закидываете свой в тему / дочернюю тему по адресу woocommerce, дальше структура как в папке templates
https://github.com/woocommerce/woocommerce/tree/50...
там можно переопределить все что угодно, но очень желательно сохранять все хуки.
теоретически можно вообще собрать любой шаблон , например тут
<?php
/**
* Hook: woocommerce_before_single_product_summary.
*
* @hooked woocommerce_show_product_sale_flash - 10
* @hooked woocommerce_show_product_images - 20
*/
do_action( 'woocommerce_before_single_product_summary' );
?>
<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>
<?php
/**
* Hook: woocommerce_after_single_product_summary.
*
* @hooked woocommerce_output_product_data_tabs - 10
* @hooked woocommerce_upsell_display - 15
* @hooked woocommerce_output_related_products - 20
*/
do_action( 'woocommerce_after_single_product_summary' );
?>
</div>
можно убрать все do_action и запихать весь вывод в один файл, подход очень сомнительный, но встречается, индусы очень любят такое
так же надо не забыть добавить в тему поддержку woocommerce
https://developer.woocommerce.com/docs/theming/the... - это прямо важно
на самом деле woo очень дружественно к разработчику и позволяет всякое достаточно не сложно