В документации
docs.woothemes.com/document/template-structure
я нашел что можно копировать папку шаблонов
/plugins/woocommerce/templates/
в папку своей темы, переименовать ее в woocommerce
/themes/mytheme/woocommerce/
И дальше менять эти шаблоны.
Но я скачал темы от woothemes (так сказать родные темы), например storefront и mystile, и в них все по другому, нету уже шаблонов, как верстка интегрирована? Непонятно. То есть сами они для себя делают шаблоны не так как советуют в документации?
Начал я делать тему как в документации они советуют. Возникла у меня простая задача, нужно добавить класс к кнопке "Proceed to Checkout" в корзине, я открываю файл шаблона корзины woocommerce/cart/cart-totals.php и там вижу
<?php do_action( 'woocommerce_proceed_to_checkout' ); ?>
вместо простой ссылки.
Поэтому, вместо того чтобы просто изменить ссылку, мне нужно переопределять эту функцию в файле functions.php.
Зачем такое разделение? Зачем мелкие элементы типа кнопок и ссылок делать в виде do_action и убирать их в совершенно другое место, а не оставить их там где они должны выводиться?
Дальше. Хотел поменять местами цену и кнопку "Add to cart", захожу в файл соответствующего шаблона и вижу
<?php
/**
* woocommerce_single_product_summary hook
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_rating - 25
* @hooked woocommerce_template_single_price - 25
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_sharing - 50
*/
do_action( 'woocommerce_single_product_summary' );
?>
В итоге половина темы у меня в файле function.php и еще он теперь пестрит строчками вида:
remove_action("...");
add_action("...");
remove_action("...");
add_action("...");
Но люди из woothemes наверняка умнее меня, поэтому чего я не понимаю? Это паттерн какой-то или что? Чем это удобнее?
И как сделать тему так, что если мне надо поменять html в корзине, я захожу в шаблон корзины и меняю, а не ищу соответствующую функцию где-то еще?