Крючки действий WooCommerce и переопределяющие шаблоны
Я начал учиться создавать шаблоны с помощью WooCommerce и столкнулся с небольшой проблемой. Например, в файле php content-single-product.php из плагина Woocommerce у меня есть такие строки:
<?php
/**
* woocommerce_single_product_summary hook.
*
* @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
*/
do_action( 'woocommerce_single_product_summary' );
?>
И, например, когда я хочу отредактировать это (удалить некоторые поля и изменить структуру) Я пытаюсь стереть строку:
Действие Do_action('woocommerce_single_product_summary');
И после этого напишите так:
<?php
/**
* woocommerce_single_product_summary hook.
*
* @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
*/
//do_action( 'woocommerce_single_product_summary' );
do_action('woocommerce_template_single_title');
?>
Мог бы скажите мне, пожалуйста, почему это не работает?
Как правильно редактировать таким образом?
Спасибо
1 answers
Сначала в ссылка ниже вы найдете, как правильно переопределять шаблоны woocommerce с помощью темы ( избегание редактирования шаблонов плагинов).
В вашем первом фрагменте кода, как вы можете видеть для woocommerce_single_product_summary
крюк, у вас есть в порядке все различные шаблоны, которые @hooked
в этом расположении крючка с do_action()
Функция WordPress:
do_action( 'woocommerce_single_product_summary' );
Итак, в вашем настроенном коде (2-й фрагмент кода) вы только что заменили крючок на зацепленный шаблон slug ( это НЕкрючок) и будет НЕ работать в качестве точки входа крючок действия. Смотрите ссылки в нижней части этого ответа для списка действий и фильтров WooCommerce существующих крючков...
Последствия: Все остальные подключенные шаблоны в коде списка комментариев (начиная с @hooked) будет отсутствовать , если вы замените крюк шаблонным слизняком.
Объяснения (Как):
КАК ЭТО СДЕЛАТЬ - Конкретный пример:
Вы хотите настроить
woocommerce_template_single_title
подключенный шаблон вwoocommerce_single_product_summary
крюк.THE HOOK NAME: woocommerce_single_product_summary hook. THE TEMPLATES HOOKED (+priority order number) => corresponding template file name: — woocommerce_template_single_title (5) => single-product/title.php — woocommerce_template_single_rating (10) => single-product/rating.php — woocommerce_template_single_price (10) => single-product/price.php — woocommerce_template_single_excerpt (20) => single-product/short-description.php — woocommerce_template_single_add_to_cart(30) => single-product/add-to-cart/ (6 files depending on product type) — woocommerce_template_single_meta (40) => single-product/review-meta.php — woocommerce_template_single_sharing - (50) => single-product/share.php
Затем вам нужно будет отредактировать соответствующий
woocommerce_single_product_summary
крюкtitle.php
расположенный вsingle-product
( суб папка)… Наконец, это не так сложно, как только мы поймем файлы структуры шаблонов и крючки в этих шаблонах.Номер приоритета задает порядок для подключенных шаблонов: сначала меньше, в конце больше...
Другие способы:
Вы также можете использовать все существующие шаблоны для нацеливания на очень конкретные изменения или настройки, с пользовательскими функциями, расположенными в
function.php
файл вашей активной дочерней темы (или темы) или любой файл плагина тоже.
Пример использования функции add_action()
WordPress:
// define the woocommerce_single_product_summary callback function
function my_custom_action() {
echo '<p>This is my custom action function</p>';
};
add_action( 'woocommerce_single_product_summary', 'my_custom_action', 15 );
Эта функция имеет приоритетный номер
15
и отобразит "Это моя пользовательская функция действия" текст строки, междуproduct price
и тотproduct short description
...Необязательные аргументы этой подключенной функции для этого подключения:
- Шаблонный слизняк (строка).
- Приоритет (int).
Ссылки: