function ps_get_taxonomy_parents($term_id, array $terms = array()) { $obTerm = get_term($term_id, 'product_cat'); if (!empty($obTerm->parent)) { $terms = ps_get_taxonomy_parents($obTerm->parent, $terms); } $terms[] = $obTerm; return $terms; }
/** * Рендеринг навигации "хлебных крошек" * @param $content * @return mixed */ function showBreadCrumbs($content) { global $post; if ((@$post->post_type != 'ps_catalog' || !is_single()) && !is_tax('ps_category') && !is_post_type_archive('ps_catalog')) { return; } $delimiter = '»'; // разделить между ссылками $home = 'Home'; // текст ссылка "Главная" $before = '<span class="current">'; $after = '</span>'; if (!is_home() && !is_front_page() || is_paged()) { echo '<div id="crumbs">'; global $post; $homeLink = get_bloginfo('url'); echo '<a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' '; if (!is_post_type_archive('ps_catalog')) { echo '<a href="' . get_post_type_archive_link('ps_catalog') . '">' . get_post_type_object('ps_catalog')->labels->name . '</a> '; } else { echo $before . get_post_type_object('ps_catalog')->labels->name . $after; } if (is_tax('ps_category')) { global $wp_query; $cat = $wp_query->get_queried_object(); $taxonomies = ps_get_taxonomy_parents($cat->parent); foreach ($taxonomies as $obTerm) { if (get_class($obTerm) !== 'WP_Error') { echo ' ' . $delimiter . ' ' . ' <a href="' . get_category_link($obTerm) . '" title="' . esc_attr(sprintf(__("Посмотреть все товары в категории %s"), $obTerm->name)) . '">' . $obTerm->name . '</a>'; } } echo ' ' . $delimiter . ' ' . $before . ' ' . $cat->name . ' ' . $after; } elseif (is_single() && !is_attachment()) { $cat = get_the_terms($post->ID, 'ps_category'); if (is_array($cat)) { foreach ($cat as $obCat) { $cat = $obCat; break; } $taxonomies = ps_get_taxonomy_parents($cat->parent); $taxonomies[] = $cat; foreach ($taxonomies as $obTerm) { if (get_class($obTerm) !== 'WP_Error') { echo ' ' . $delimiter . ' <a href="' . get_category_link($obTerm) . '" title="' . esc_attr(sprintf(__("Посмотреть все товары в категории %s"), $obTerm->name)) . '">' . $obTerm->name . '</a>'; } } } echo ' ' . $delimiter . ' '; echo $before . get_the_title() . $after; } echo '</div>'; } }