Вывод названия текущей категории в WordPress

Admin PHP, WordPress

Готовые PHP для вывода названий текущей категории в записях WordPress. Вывод разделов в зависимости от глубины подраздела, в которой находится запись.

Также может оказаться полезной статья о том, как проверить разделы на наличие в них подразделов.

Есть стандартная функция для вывода категорий на WordPress:

<?php the_category(', '); ?>

Она выводит список всех категорий через запятую.

А что если нужно вывести только определенный вложенный (дочерний) или только главный раздел? И совсем не нужно выводить все предыдущие разделы. В этом случае the_category уже не подойдет.

Сделать это можно другими способами.

Вывести название только самого главного раздела

Этот код следует вставить в файл functions.php своей темы на WordPress.

function get_level($category, $level = 1)
{
    if ($category->category_parent == 0) {
        return $level;
    } else {
        $level++;
        $category = get_category($category->category_parent);
    return get_level($category, $level);
    }
}

function display_cat_level_1($link=false){
    $cats = get_the_category( );
    if( $cats ){
        foreach($cats as $cat){
            $current_cat_level = get_level($cat);
            if( $current_cat_level  == $level = 1 ){
                if($link==true) {
                    echo '<a href="'.get_category_link($cat->cat_ID).'">'.$cat->name."</a> &nbsp;";
                } else {
                    echo $cat->name."<br />";
                }
            }
        }
    }
}

Вывод этой функции:

<?php if (function_exists('display_cat_level')) {
echo 'Другие  статьи смотрите в главном разделе:';
echo display_cat_level (true);
}?>

Следующий код необходимо использовать в файле single.php или любом другом отвечающим за вывод информации в статье на сайте.

Вывести название только дочернего раздела

Функция не будет работать для записей второй категории вложенности. Только для записей третей категории вложенности. Иными словами будет выводиться только для записей такого рода:

Категории Марки -> Audi -> Статья об Ауди

В данном случае код выведет для записи «Статья об Ауди» раздел с названием Audi. А если какая-то статья будет находится только в разделе Марки, то для неё выводится ничего не будет.

function get_level($category, $level = 1)
{
    if ($category->category_parent == 0) {
        return $level;
    } else {
        $level++;
        $category = get_category($category->category_parent);
    return get_level($category, $level);
    }
}

function display_cat_level_2($link=false){
    $cats = get_the_category( );
    if( $cats ){
        foreach($cats as $cat){
            $current_cat_level = get_level($cat);
            if( $current_cat_level  == $level = 2 ){
                if($link==true) {
                    echo '<a href="'.get_category_link($cat->cat_ID).'">'.$cat->name."</a> &nbsp;";
                } else {
                    echo $cat->name."<br />";
                }
            }
        }
    }
}

Вывод этой функции:

<?php if (function_exists('display_cat_level_2')) {
echo 'Другие  статьи смотрите в главном разделе:';
echo display_cat_level_2 (true);
}?>

Вывод родительской категории в статьях

Можно выводить разделы другим способом. В этом случае не нужно ничего вставлять в файл functions.php. Достаточно вставить код в файл вывода записей.

<?php
// Вывод родительской категории "0", с исключением нескольких рубрик
$separator = '';
//$excludedcats = array(12,13,14,15);
$count = 0;
$printArray = explode(",", $print);
$categories = get_the_category();
foreach($categories as $category) {
$count++;
if ($category->category_parent == 0) {
if ( !in_array($category->cat_ID, $excludedcats) ) {
  echo $separator . ''  . $category->name.'';
//     echo $separator .  '  – <a href="' . get_category_link( $category->term_id ) . '" title="' . esc_attr(strip_tags($category->name)) . '" ' . '>'  . $category->name.'</a>';
 
}
$separator = ' , ';
}
}
?>

Вывод названия последнего раздела для статьи

Этот php код выводит название самой «глубокой» категории для статьи:

<?php
$categories = get_the_category($post->ID);
foreach($categories as $category) :
    $children = get_categories( array ('parent' => $category->term_id ));
    $has_children = count($children);
    if ( $has_children == 0 ) {
       
echo '<a href="'.get_category_link($category->term_id ).'">'.$category->cat_name.'</a>';
    }
endforeach;
?>

Выводим в статье только подразделы

А вот ещё один способ как вывести в статье только подразделы.

foreach($categories as $category) :
    $children = get_categories( array ('parent' => $category->term_id ));
    $has_children = count($children);

    if ( $has_children == 0 ) {
        echo $category->cat_name .' ';
        break; // Останавливаем после первого найденного объекта. Если нужны все, то строчку нужно закомментировать.
    }
endforeach;

У сайта нет цели самоокупаться, поэтому на сайте нет рекламы. Но если вам пригодилась информация, можете лайкнуть страницу, оставить комментарий или отправить мне подарок на чашечку кофе.

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Вывод названия текущей категории в WordPress"