Хлебные крошки заданы функцией woocommerce_breadcrumb(), которая определена в файле \wp-content\plugins\woocommerce\includes\wc-template-functions.php
Шаблон хранится в файле \wp-content\plugins\woocommerce\templates\global\breadcrumb.php. Чтобы изменить его, необходимо скопировать этот файл в папку с Вашей темой \wp-content\themes\ВАША_ТЕМА\woocommerce\global\breadcrumb.php
Саму функцию тоже можно переопределить, так как она обернута в
if ( ! function_exists( 'woocommerce_breadcrumb' ) ) { }
. Свою функцию с именем woocommerce_breadcrumb() можно задать в файле functions.php Вашей темы.
Здесь есть фильтр (apply_filters) и функция wp_parse_args().
wp_parse_args - сравнивает два массива. Первый, который мы передаем в качестве аргумента функции, сравнивается с массивом аргументов по-умолчанию. Если найдутся совпадения, то будут использоваться настройки переданные функцией, в противном случае, по-умолчанию.
Фильтр apply_filters меняет значения массива по умолчанию. Если нужно изменить только их, но не нужно переопределять всю функцию. Достаточно только добавить новый фильтр.
Например, заменим разделитель в хлебных крошках. Для этого в файле function.php добавим строки:
Далее создается экземпляр класса $breadcrumbs = new WC_Breadcrumb();. Сам класс определен в файле \wp-content\plugins\woocommerce\includes\class-wc-breadcrumb.php. Там же и используемые функции add_crumb(), generate()
При инициализации нового экземпляра класса WC_Breadcrumb создается массив $crumbs в который и будут добавляться элементы хлебных крошек.
/**
* Add a crumb so we don't get lost.
*
* @param string $name
* @param string $link
*/
public function add_crumb( $name, $link = '' ) {
$this->crumbs[] = array(
strip_tags( $name ),
$link,
);
}
В этом массиве каждый элемент массива это массив из двух значений - имени и ссылки. Далее чтобы взаимодействовать с массивом всех крошек есть хук woocommerce_get_breadcrumb, применяемый в функции get_breadcrumb() том же файле.
/**
* Get the breadcrumb.
*
* @return array
*/
public function get_breadcrumb() {
return apply_filters( 'woocommerce_get_breadcrumb', $this->crumbs, $this );
}
С помощью этого фильтра можно изменить массив крошек.
Фильтр woocommerce_breadcrumb_home_url поможет заменить URL главной страницы в хлебных крошках на любой другой. Пример использования в functions.php:
add_filter( 'woocommerce_breadcrumb_home_url', 'woo_custom_breadrumb_home_url' );
function woo_custom_breadrumb_home_url() {
return 'НЕОБХОДИМЫЙ_ВАМ_УРЛ';
}
Далее вызывается метод $breadcrumbs->generate(), который в зависимости от типа страницы возвращает хлебные крошки.
Последнее действие функции woocommerce_breadcrumb() это передача данных в шаблон с помощью wc_get_template( 'global/breadcrumb.php', $args );