Что такое рубрики в WordPress, как их добавить, настроить и что с ними можно делать

8 декабря, 2024
Рубрики в WordPress – это один из основных способ фильтрации различных типов записей и являются неотъемлемой частью любого WordPress сайта.
Быстрая навигация по записи

Рубрики в WordPress – это один из основных способ фильтрации различных типов записей и являются неотъемлемой частью любого WordPress сайта

Ликбез

Когда используется термин «тип записи», важно понимать, что их может быть много. Так, например: Записи (посты в блоге) — это тоже «тип записи», равно как и страницы. Количество возможных типов записей на вашем WordPress сайте неограниченно!

Благодаря рубрикам осуществляется группировка связанных записей. Рубрика, к которой по умолчанию привязываются все новые записи — «Без рубрики» (Uncategorized), но ее можно легко изменить в настройках.

По умолчанию страницы, в отличии от записей, нельзя объединить в рубрику ?
Если сильно захотеть, то можно.

Есть два основных способа добавления рубрик.

Добавление рубрики в WordPress и её основная настройка

Указать рубрику можно при редактировании или создании новой записи. Если вы используете встроенный редактор блоков, то в настройках документа воспользуйтесь разделом «Рубрики»:

Скриншот редактора WordPress с настройками рубрик и выделенными элементами интерфейса
Пример интерфейса WordPress для настройки и добавления рубрик.

Добавленная, во время редактирования записи, рубрика –будет автоматически назначена.

Управление рубриками в WordPress, осуществляется через пункт меню «Рубрики», в панели администратора, который доступен для большинства различных типов записей. В нашем случае это сами записи (посты в блоге) и это второй способ добавления:

Скриншот панели администратора WordPress с интерфейсом добавления и управления рубриками.
Добавление рубрики в WordPress через панель администратора

На этой странице вы увидите список уже добавленных рубрик, а также несколько пустых полей, позволяющих создать новую рубрику.

 

Если ваша тема или плагины не расширяют основной функционал WordPress, то для каждой рубрики будут доступны следующие настройки:

  • Имя – Полно название рубрики, например как у нас «Инструкции и руководства по WordPress для чайников»
  • Ярлык (slug) – часть постоянной ссылки, в нашем случае это instrukcii
  • Родительская рубрика – рубрики имею иерархию, например родительская рубрика может называться «WordPress руководства», а её дочерние элементы: «Для новичков» и «Для разработчиков»
  • Описание – большинство тем выводят значение этого поля на странице архива рубрики.
Справка

Новичкам будет полезно знать, что рубрики в WordPress являются таксономией и подчиняются всем основным принципам, которые заложены в это понятие!

Тут стоит подвести черту, закончив вводную часть и перейти к практике работы с рубриками. Так и сделаем. ?

Практика работы с WordPress рубриками

Все программисты априори стремятся максимально оптимизировать свой рабочий процесс, избавиться от ручного труда и доработать, доступный по умолчанию функционал.

Давайте рассмотрим основные методы автоматизированной работы с данной таксономией.

Добавление рубрик программным методом

В некоторых случаях, особенно когда идет процесс миграции сайта на WordPress платформу, ручное добавление рубрик – не самый удачный метод.
Для добавления любых таксономия в WordPress используется функция wp_insert_term():
				
					$wplb_category = wp_insert_term(

    // Название рубрики
    'WordPress laboratory',

    // Таксономия, в нашем случае это «category» ()
    'category',

    array(
        
        // Часть постоянной ссылки
        'slug' => 'wplb',
        
        // Описание рубрики
        'description' => 'Инструкции и руководства по WordPress для чайников',
        
        // Родительская рубрика. В качестве переменной принимает ID рубрики, а 0 - не имеет родителя.
        'parent' => 0
    )
);
				
			

И как результат отработки скрипта, в переменную $wplb_category запишется массив:

				
					Array
(
    [term_id] => 129 // ID термина в таблице терминов.
    [term_taxonomy_id] => 129 // ID пары (термин + таксономия).
)
				
			

Тут стоит пояснить, что в таблице базы данных WordPress wp_term_taxonomyкаждая строка почти всегда имеет одинаковое значение для двух столбцов term_taxonomy_id и term_id.

В связи с этим в массиве и отображаются идентичные значения. Но если вы добавите уже существующий термин в другую таксономию, например в метки, то значения элементов массива будут отличаться.

term_id и term_taxonomy_id будут новыми, так как это уникальная связка термина и таксономии и не важно, что название, описание или slug идентичны.

Редактирование существующих рубрик

Для редактирования рубрик, нужно знать их атрибуты и это можно сделать, используя функцию get_term_by().

Как видно получить информацию о термине достаточно просто, найти его можно по name, id, slug, а так же ID (term_id) и term_taxonomy_id. Обратите внимание на разницу между «id» и «ID», в некоторых случаях вам это сильно поможет. ⚠️

Эта функция крайне полезна, когда нужно получить доступ к рубрикам в больших циклах.

Давайте редактировать рубрику, зная её id:

				
					$status = wp_update_term( 129, 'category', array(
    'name' => 'Новое название рубрики',
    'slug' => 'wplb-slug',
    'description' => 'Новое описание'
) );
				
			
Если функция отработало успешно, то в переменную $status запишется массив, содержащий тоже самое, что и при добавлении рубрики, а в противном случае массив будет содержать информацию об ошибках.

Добавление новых полей к WordPress рубрикам

В WordPress можно менять почти всё и рубрики не исключение. Ели чего-то не хватает, то это всегда можно добавить!

А добавлять мы будем изображение к нашей категории, использовав функцию add_term_meta(). Вот мы и добиралась до хуков 🙂

				
					add_action(
    // Добавляем поле в область редактирования рубрики
    'category_edit_form_fields',
    function ( $wplb ) {
        $wplb_image = get_term_meta( $wplb->term_id, 'wplb_image', true );
        echo "
        <tr class='form-field'>
            <th scope='row'>
                <label for='wplb_image'>
                    " . __( 'Изображение для рубрики' ) . "
                </label>
            </th>
            <td>
                <input type='text' name='wplb_image' id='wplb_image' value='" . $wplb_image . "'>
                <p class='description'> " . __( 'ID изображения' ) . " </p>
            </td>
        </tr>
        ";
    }
);
add_action( 
    // Добавляем событие при сохранение
    'edited_category', 
    function ( $term_id ) {
        if ( isset( $_POST[ 'wplb_image' ] ) ){
            update_term_meta( $term_id, 'wplb_image', $_POST[ 'wplb_image' ] );
        }
    } 
);
				
			
Да, добавить вызов полноценной библиотеки изображений на странице было более правильным методом, но в рамках этой статьи это было бы лишним.

Итак, после успешного добавления новых событий, на странице редактирования рубрики в WordPress появится новое поле:

Поле ввода ID изображения для рубрики в интерфейсе WordPress.
Редактирование рубрики в WordPress

Используя этот метод можно добавлять неограниченно количество метаданных к рубрикам.

Создаем шорткод рубрики

Давайте рассмотрим один из самых часто используемых приемов, а именно создадим шорткод для вывода рубрик. Так же будем использовать изображение рубрики:
				
					add_shortcode( 'wplb_cat', 'wplb_shortcode' );

function wplb_shortcode( $atts ) {
    $atts = shortcode_atts( array(
        'cat' => '',
    ), $atts, 'wplb_cat' );
    
    // Получаем ID изображения
    $image_id = get_term_meta( 1, 'wplb_image', true );
    
    // Используя ID получаем ссылку
    $image_src = wp_get_attachment_image_src( $image_id, '', false );
    $image_src[ 0 ] = 'https://wordpresslab.ru/wp-content/uploads/2020/08/polnoe-rukovodstvo-po-xmlrpc.php-v-wordpress-chto-eto-takoe-riski-dlya-bezopasnosti-i-kak-otklyuchit.gif';

    // Находим рубрику по переменной шортокда
    $category = get_category( $atts[ 'cat' ] );

    // Получаем ссылку на архив рубрики
    $category_link = get_category_link( $category->term_id );
    
    // Подготавливаем код для вывода
    $output = '
    <div class="wplb_cat" style="background-image: url(' . $image_src[ 0 ] . ');">
        <a href="' . esc_url( $category_link ) . '" title="' . $category->name . '" target="_blank" class="wplb_cat_a">
            <div>
                <span>Рубрика:</span>
                <p class="wplb_title">' . $category->name . '</p>
                <p>' . $category->description . '</p>
            </div>
        </a>
    </div>
    ';
    
    // Выводим
    return $output;
}
				
			
Шорткод готов, а в качестве переменной атрибута cat будем передавать ID рубрики:
				
					[wplb_cat cat="129"]
				
			
Всё достаточно просто, давайте добавим стилей:
				
					.wplb_cat {
    background-size: cover;
    display: block;
    text-align: center;
}
.wplb_cat .wplb_title {
    color: #fff;
    font-size: 1.5rem;
    line-height:32px;

}
.wplb_cat span {
    font-size: 12px;
    letter-spacing: 1px;
    color: #bbb;
}
.wplb_cat p {
    color: #aaa;
    font-size: 14px;
    line-height: 20px;
}
.wplb_cat_a {
    padding: 80px 100px;
    display: block;
    text-decoration: none;
    background: rgba(0,0,0,.8);
    border: 1px solid #fff;
}

@media only screen and (max-width: 768px) {
    .wplb_cat_a{
        padding: 20px 40px;
    }
}
				
			
И как результат:

Всё очень просто, не так ли?

Хуки (события и фильтры) для рубрик

К сожалению, большинство начинающих WordPress разработчиков пытаются модифицировать отображение рубрик через редактирования шаблона темы.

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое.

Да, этот метод оправдан если речь идет о циклах, но стоит учитывать, что большинство стандартных функций в WordPress завязано на события, которые можно хукать.
В качестве примера добавим дополнительную HTML разметку к блоку описания категории.
Изначально заголовок и описание рубрики выглядит вот так:
Панель администратора WordPress с настройками рубрик
Рубрики в WordPress – пример работы фильтра

Добавим этот код в functions.php:

				
					add_filter( 'category_description', 'wplb_description', 10, 2 );
function wplb_description( $description, $category ){

    if ($category == '129'){
        $description = '<div class="alert alert-warning">'.$description.'</div>';
    }

    return $description;
}
				
			

Для категории с ID равным 10, описание обернуто тэгом:

Этот метод будет очень полезен, если описание просто огромное и его часть нужно визуально скрыть, используя jQuery.

Заключение

Работать с рубриками в WordPress ничуть не сложнее чем с любыми другими элементами таксономии. Их можно модифицировать и расширять, изначально заложенный в них, функционал.
Напоследок хочется сказать, что старайтесь чаще использовать события и фильтры, этот подход значительно упрощает процесс разработки.

Если у вас есть вопросы – спрашивайте в комментариях и мы обязательно вам ответим.

Спасибо.

Оставить комментарий

Нужна помощь с WordPress WooCommerce плагинами темой оптимизацией ?

Упрощаем сложное, создаем впечатляющее!
100% без риска
Нет обязательств по найму
Бесплатная оценка
5900 ₽
Мега меню
Премиальный шаблон для создания сайта компании или интернет магазина с высокой конверсией на базе WordPress и WooCommerce, раскрывающий всю мощь плагина Elementor, как лучшего визуального редактора!

Поможем вывести Ваш бизнес на новый уровень!

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил

Добро пожаловать!

Авторизуйтесь, чтобы продолжить

или

Забыли пароль? Восстановить

* Если аккунта у Вас еще нет, то он будет создан автоматически

Давайте составим техническое задание!
100% без риска
Нет обязательств по найму
Бесплатная оценка стоимости
Здравствуйте! Я асистент на основе искусственного интеллекта. Вы можете общаться со мной, как с человеком — задавайте вопросы, описывайте свои идеи и требования.

С удовольствием помогу вам составить техническое задание для вашего WordPress проекта. Если Вам нужна техническая поддержка по купленному у нас плагину или шаблону, то создайте тикет в личном кабинете.

Выберите подходящий вариант или опишите свою задачу в свободной форме, и я помогу вам составить четкий план действий, для оценки стоимости нашими разработчиками! 😊