Хлібні крихти Woocommerce: як видалити, змінити, перемістити

Зіткнувся з проблемою: розмітка 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(порядок очередности) );

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *