Files
sportpressa_backend/template-parts/breadcrumbs.php
2026-01-09 18:13:48 +03:00

55 lines
2.2 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if ( ! is_single() ) return;
// Рекурсивная функция с Schema.org позицией
function render_full_category_breadcrumbs( $cat_id, &$position = 1, $separator = ' > ' ) {
$cat = get_category( $cat_id );
if ( ! $cat ) return;
// Рекурсивно выводим родителей
if ( $cat->parent != 0 ) {
render_full_category_breadcrumbs( $cat->parent, $position, $separator );
}
// Выводим категорию с Schema.org структурой
echo '<li property="itemListElement" typeof="ListItem" itemprop="itemListElement">
<a property="item" typeof="WebPage" href="' . esc_url( get_category_link( $cat->term_id ) ) . '">
<span property="name" itemprop="name">' . esc_html( $cat->name ) . '</span>
</a>
<meta property="position" content="' . $position . '" />
</li>';
$position++;
}
// Функция проверки принадлежности к рубрике Новости
function is_news_category( $cat_id ) {
$news_cat = get_category_by_slug( 'news' );
if ( ! $news_cat ) return false;
// Проверяем, является ли текущая категория "Новости" или её потомком
return ( $cat_id == $news_cat->term_id || cat_is_ancestor_of( $news_cat->term_id, $cat_id ) );
}
$categories = get_the_category();
if ( empty( $categories ) ) return;
$main_cat = $categories[0];
$breadcrumb_position = 1;
$show_datetime = is_news_category( $main_cat->term_id );
?>
<nav class="breadcrumbs" aria-label="Навигация по рубрикам" itemscope itemtype="https://schema.org/BreadcrumbList">
<ol class="breadcrumbs_list" itemprop="itemListElement">
<?php render_full_category_breadcrumbs( $main_cat->term_id, $breadcrumb_position ); ?>
<?php if ( $show_datetime ) : ?>
<li property="itemListElement" typeof="ListItem">
<span property="item" typeof="WebPage" itemprop="name"><?php the_time('j F Y, H:i \М\С\К'); ?></span>
<meta property="position" content="<?php echo ++$breadcrumb_position; ?>" />
</li>
<?php endif; ?>
</ol>
</nav>