Хлебные крошки заданы функцией 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
Вашей темы.
Параметры можно передавать через массив $args
Теперь разберем саму функцию:
function woocommerce_breadcrumb( $args = array() ) {
$args = wp_parse_args( $args, apply_filters( 'woocommerce_breadcrumb_defaults', array(
'delimiter' => ' / ',
'wrap_before' => '',
'before' => '',
'after' => '',
'home' => _x( 'Home', 'breadcrumb', 'woocommerce' ),
) ) );
$breadcrumbs = new WC_Breadcrumb();
if ( ! empty( $args['home'] ) ) {
$breadcrumbs->add_crumb( $args['home'], apply_filters( 'woocommerce_breadcrumb_home_url', home_url() ) );
}
$args['breadcrumb'] = $breadcrumbs->generate();
/**
* @hooked WC_Structured_Data::generate_breadcrumblist_data() - 10
*/
do_action( 'woocommerce_breadcrumb', $breadcrumbs, $args );
wc_get_template( 'global/breadcrumb.php', $args );
}
Разберем всё по порядку.
$args = wp_parse_args( $args, apply_filters( 'woocommerce_breadcrumb_defaults', array(
Здесь есть фильтр (apply_filters
) и функция wp_parse_args()
.
wp_parse_args - сравнивает два массива. Первый, который мы передаем в качестве аргумента функции, сравнивается с массивом аргументов по-умолчанию. Если найдутся совпадения, то будут использоваться настройки переданные функцией, в противном случае, по-умолчанию.
Фильтр apply_filters
меняет значения массива по умолчанию. Если нужно изменить только их, но не нужно переопределять всю функцию. Достаточно только добавить новый фильтр.
Например, заменим разделитель в хлебных крошках. Для этого в файле function.php
добавим строки:
add_filter( 'woocommerce_breadcrumb_defaults', 'my_breadcrumbs_delimiter');
function my_breadcrumbs_delimiter($args) {
$args['delimiter'] = ' | ';
return $args;
}
Далее создается экземпляр класса $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 );
Если письма с сайта не приходят, можно попробовать отправлять из через почтовый сервер gmail. Для…
jQuery аудио плейер на сайт для нескольких треков с кнопкой Play/Pause
Favicon Фавиконка это маленькая пиктограмма сайта, нужна для отображения на вкладке браузера и в закладках.…
При входе в админку происходит редирект на ту же страницу входа. Эта статья для вас,…
Иногда можно получить такую ошибку: RuntimeException: failed to get url ... No working transport found…
Перед запуском wp-cli вам потребуется скачать и установить cygwin Весь wp-cli это один файл, который…