Зіткнувся з проблемою: розмітка HTML мене не влаштовувала, тк погано підходила для динамічних сторінок. Здавалося б елементарна проблема, розв’язувана зміною коду верстки, в чому складність? Складність, а точніше нестандартність, в підході Woocommerce. І якщо ви не готові миритися зі стандартними сутностями цього інтернет-магазину, пора зрозуміти його принципи.
Хлібні крихти Woo – місце дислокації
Відповідальність за виведення несе функція
<?php woocommerce_breadcrumb(); ?>
прописана вона в файлі розташованому за адресою: site.com/wp-content/plugins/woocommerce/includes/wc-template-functions.php, а шаблон цієї секції знайдете тут: site.com/wp-content/plugins/woocommerce/templates/global/breadcrumb.php
А тепер про особливості – функція хлібних крихт не виводиться самостійно, а зазвичай у складі хука. в моєму випадку це виглядає так:
<?php
/**
* woocommerce_before_main_content hook.
*
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
* @hooked woocommerce_breadcrumb - 20
*/
do_action( 'woocommerce_before_main_content' );
?>
За коментарями видно, що breadcrumb поключенія “другим номером” в хук з назвою woocommerce_before_main_content.
Breadcrumb Woo: перепозиціонування
Виходячи з необхідних завдань можна припустити 3 варіанти дій:
- Видалити функцію зі хука;
- Видалення, з перепідключеннями у вигляді окремої функції;
- Видалення з включенням до складу іншого хука.
Процес видалення / виключення будемо розглядати на прикладі хука опублікованого вище. Зверніть увагу на 3 складових:
- Назва хука з яким працюємо;
- Найменування функції;
- Цифра позначає порядок черговості.
Всі 3 складові у нас відомі, значить код буде виглядати так:
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
і розміщуємо його в файлі functions.php. Якщо цю або іншу функцію треба приєднати до іншого хуку то використовуємо такий код:
add_action( 'woocommerce_before_shop_loop_item_title(имя хука)', 'woocommerce_template_loop_product_title(имя функции)', 5(порядок очередности) );