Объем поддержки: мы не можем оказывать поддержку по кастомизации в рамках нашей политики поддержки. Если вам нужно изменить этот сниппет или расширить его функциональность, рекомендуем обратиться к Woo Agency Partner или разработчику WooCommerce через Codeable.
Добавьте этот код в файл functions.php дочерней темы или используйте плагин для добавления пользовательского кода, например Code Snippets.
Не добавляйте код напрямую в functions.php родительской темы — при обновлении темы все изменения будут удалены.
/**
* Показ категорий товаров в хлебных крошках WooFramework
*/
// Хлебные крошки на страницах товаров в формате:
// Главная > Магазин > Категория товара > Товар
add_filter('woo_breadcrumbs_trail', 'woo_custom_breadcrumbs_trail_add_product_categories', 20);
function woo_custom_breadcrumbs_trail_add_product_categories($trail) {
if ((get_post_type() == 'product') && is_singular()) {
global $post;
$taxonomy = 'product_cat';
$terms = get_the_terms($post->ID, $taxonomy);
$links = array();
if ($terms && !is_wp_error($terms)) {
$count = 0;
foreach ($terms as $c) {
$count++;
if ($count > 1) continue;
$parents = woo_get_term_parents($c->term_id, $taxonomy, true, ', ', $c->name, array());
if ($parents != '' && !is_wp_error($parents)) {
$parents_arr = explode(', ', $parents);
foreach ($parents_arr as $p) {
if ($p != '') {
$links[] = $p;
}
}
}
}
// Добавляем конечный элемент хлебных крошек
$trail_end = get_the_title($post->ID);
// Вставляем категории в цепочку
array_splice($trail, 2, count($trail) - 1, $links);
$trail['trail_end'] = $trail_end;
}
}
return $trail;
}
/**
* Получение родительских терминов с разделителем
*
* @param int $id ID термина
* @param string $taxonomy таксономия
* @param bool $link использовать ссылки
* @param string $separator разделитель
* @param bool $nicename использовать "чистое" имя
* @param array $visited уже обработанные термины
* @return string
*/
if (!function_exists('woo_get_term_parents')) {
function woo_get_term_parents($id, $taxonomy, $link = false, $separator = '/', $nicename = false, $visited = array()) {
$chain = '';
$parent = &get_term($id, $taxonomy);
if (is_wp_error($parent)) {
return $parent;
}
$name = $nicename ? $parent->slug : $parent->name;
if ($parent->parent && ($parent->parent != $parent->term_id) && !in_array($parent->parent, $visited)) {
$visited[] = $parent->parent;
$chain .= woo_get_term_parents(
$parent->parent,
$taxonomy,
$link,
$separator,
$nicename,
$visited
);
}
if ($link) {
$chain .= '<a href="' . get_term_link($parent, $taxonomy) . '">' . $parent->name . '</a>' . $separator;
} else {
$chain .= $name . $separator;
}
return $chain;
}
}
