Хлебные крошки 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 не будет опубликован. Обязательные поля помечены *