Как вывести рубрики на страницу wordpress

Как вывести рубрики на страницу wordpress

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

<?php wp_list_categories([ 'title_li' => '', 'orderby' => 'name', 'hide_empty' => false ]); ?>

Если необходимо отобразить рубрики в виде ссылок на соответствующие архивы, можно воспользоваться функцией get_categories() в сочетании с get_category_link(). Это даёт больше контроля над HTML-структурой:


<?php
$categories = get_categories([ 'hide_empty' => false ]);
foreach ( $categories as $category ) {
  echo '<a href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a>';
}
?>


<?php
$categories = get_the_category();
if ( $categories ) {
  foreach ( $categories as $cat ) {
    echo '<span>' . $cat->name . '</span>';
  }
}
?>

Добавление списка рубрик с помощью виджета «Рубрики»

Чтобы отобразить список рубрик в боковой колонке или нижнем колонтитуле, откройте панель управления WordPress и перейдите в раздел Внешний вид → Виджеты.

Найдите виджет с названием «Рубрики» и перетащите его в нужную область: сайдбар, футер или другую доступную зону виджетов вашей темы.

В настройках виджета укажите заголовок блока, например, «Темы записей». При необходимости активируйте опции:

  • Показывать как выпадающий список – для экономии места;
  • Показывать количество записей – чтобы отобразить, сколько постов в каждой рубрике;
  • Показывать иерархию – если используются вложенные рубрики.

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

Для изменения внешнего вида списка рубрик используйте классы CSS, которые добавляются автоматически: например, .widget_categories или .cat-item. Это позволяет адаптировать отображение под дизайн сайта.

Отображение рубрик в шаблоне с использованием функции wp_list_categories()

Базовый пример:

<?php wp_list_categories(); ?>

Чтобы скрыть заголовок по умолчанию и отобразить только рубрики, используйте:

<?php wp_list_categories(array(
'title_li' => ''
)); ?>

Для отображения только дочерних рубрик конкретной категории укажите параметр child_of:

<?php wp_list_categories(array(
'child_of' => 5,
'title_li' => ''
)); ?>
<?php wp_list_categories(array(
'hierarchical' => false,
'title_li' => ''
)); ?>
<?php wp_list_categories(array(
'hide_empty' => true,
'title_li' => ''
)); ?>

Чтобы задать собственный класс для обёртки списка, используйте class внутри list_args:

<?php wp_list_categories(array(
'title_li' => '',
'list_args' => array('class' => 'my-category-list')
)); ?>
<?php wp_list_categories(array(
'show_count' => true,
'title_li' => ''
)); ?>
<?php wp_list_categories(array(
'include' => '3,7,15',
'title_li' => ''
)); ?>

Откройте файл functions.php вашей темы или используйте подключаемый плагин. Добавьте следующий код:

function custom_categories_shortcode($atts) {
$atts = shortcode_atts([
'orderby' => 'name',
'order' => 'ASC',
'exclude' => '',
'include' => '',
'hide_empty' => true,
], $atts, 'custom_categories');
$args = [
'taxonomy' => 'category',
'orderby' => $atts['orderby'],
'order' => $atts['order'],
'hide_empty' => filter_var($atts['hide_empty'], FILTER_VALIDATE_BOOLEAN),
];
if (!empty($atts['exclude'])) {
$args['exclude'] = explode(',', $atts['exclude']);
}
if (!empty($atts['include'])) {
$args['include'] = explode(',', $atts['include']);
}
$categories = get_categories($args);
if (empty($categories)) return '';
$output = '';
return $output;
}
add_shortcode('custom_categories', 'custom_categories_shortcode');

Шорткод [custom_categories] можно вставлять в любой контент. Поддерживаются параметры: orderby, order, exclude, include, hide_empty. Например:

[custom_categories orderby=count order=DESC hide_empty=false exclude=1,2]

Для реализации аккордеона с рубриками и их постами используется комбинация HTML, CSS и JavaScript вместе с функциями WordPress. Ниже представлен базовый пример кода, который можно добавить в файл шаблона темы или создать отдельный шорткод.

Получение рубрик и постов:

<?php
$categories = get_categories(['hide_empty' => false]);
foreach ($categories as $category) {
echo '<div class="accordion-item">';
echo '<button class="accordion-button">' . esc_html($category->name) . '</button>';
echo '<div class="accordion-content">';
$posts = get_posts([
'category' => $category->term_id,
'numberposts' => -1
]);
if ($posts) {
echo '<ul>';
foreach ($posts as $post) {
echo '<li><a href="' . get_permalink($post->ID) . '">' . esc_html($post->post_title) . '</a></li>';
}
echo '</ul>';
} else {
echo '<p>Нет записей.</p>';
}
echo '</div>';
echo '</div>';
}
?>

JavaScript для аккордеона:

<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.accordion-button').forEach(function(button) {
button.addEventListener('click', function() {
const content = this.nextElementSibling;
content.style.display = content.style.display === 'block' ? 'none' : 'block';
});
});
});
</script>

CSS для базовой стилизации:

<style>
.accordion-button {
cursor: pointer;
background: #f0f0f0;
border: none;
padding: 10px;
width: 100%;
text-align: left;
}
.accordion-content {
display: none;
padding: 10px;
background: #fafafa;
}
</style>

Настройка отображения рубрик через пользовательский запрос WP_Query

Настройка отображения рубрик через пользовательский запрос WP_Query

Пример запроса по слагу:


$args = array(
'category_name' => 'novosti',
'posts_per_page' => 6,
'orderby' => 'date',
'order' => 'DESC'
);
$query = new WP_Query($args);

Для использования ID рубрики:


$args = array(
'cat' => 12,
'posts_per_page' => 6
);
$query = new WP_Query($args);

if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
echo '<h3>' . get_the_title() . '</h3>';
echo '<p>' . get_the_excerpt() . '</p>';
}
wp_reset_postdata();
}

Для исключения рубрик используйте отрицательные значения в параметре cat:


$args = array(
'cat' => '-8,-15'
);

$args = array(
'cat' => '5,9'
);

Если требуется уточнение по типу записей, добавьте параметр post_type:


$args = array(
'category_name' => 'novosti',
'post_type' => 'post'
);

$args = array(
'category_name' => 'novosti',
'date_query' => array(
array(
'after' => '2024-01-01',
'before' => '2024-12-31',
'inclusive' => true
)
)
);

При необходимости добавления пагинации передайте параметр paged и установите posts_per_page:


$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
'category_name' => 'novosti',
'posts_per_page' => 6,
'paged' => $paged
);

После выполнения запроса всегда используйте wp_reset_postdata() для предотвращения конфликта с основным циклом.

Фильтрация и сортировка рубрик по алфавиту или количеству записей

Фильтрация и сортировка рубрик по алфавиту или количеству записей

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

Для сортировки рубрик по алфавиту можно использовать параметр ‘orderby’ в запросах. Например, в коде для отображения рубрик можно указать:

$args = array(
'orderby' => 'name',
'order'   => 'ASC'
);
$categories = get_categories($args);

Этот код сортирует рубрики по имени в порядке возрастания. Для сортировки в обратном порядке замените ‘ASC’ на ‘DESC’.

Для сортировки по количеству записей, замените параметр ‘orderby’ на ‘count’. В этом случае рубрики будут отсортированы по количеству записей, начиная с самой заполненной:

$args = array(
'orderby' => 'count',
'order'   => 'DESC'
);
$categories = get_categories($args);

Если необходимо выполнить оба типа сортировки, можно комбинировать параметры. Например, сначала сортировать рубрики по алфавиту, а затем по количеству записей:

$args = array(
'orderby' => 'name',
'order'   => 'ASC',
'meta_key' => 'count',
'meta_value' => true
);
$categories = get_categories($args);

В случае, если требуется фильтрация рубрик, например, отображение только тех, в которых есть записи, используйте параметр ‘exclude_empty’. Установив его в ‘1’, вы исключите пустые рубрики:

$args = array(
'exclude_empty' => 1
);
$categories = get_categories($args);

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

Использование кастомных шаблонов для отдельных рубрик

Использование кастомных шаблонов для отдельных рубрик

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

Для реализации кастомного шаблона для рубрики необходимо выполнить несколько шагов:

  • Создание файла шаблона. В корневом каталоге вашей темы создайте файл с названием category-{slug}.php, где {slug} – это идентификатор рубрики. Например, для рубрики «Новости» файл будет называться category-news.php.
  • Если нужно создать шаблон для нескольких рубрик, используйте условные теги. Внутри шаблона можно добавлять условные операторы, такие как if (is_category('slug')), для выполнения различного кода для разных рубрик.
  • Добавление настроек. Внутри кастомного шаблона можно использовать стандартные функции WordPress, такие как get_header(), get_footer(), и the_content(), для создания единого интерфейса с остальными страницами сайта.
  • Стиль и структура. Для улучшения визуального восприятия можно подключать отдельные стили CSS для каждой рубрики, используя условные теги и функции WordPress, такие как wp_enqueue_style().

К примеру, если вы хотите добавить отдельный стиль для рубрики «Новости», создайте файл стилей, например, category-news.css, и подключите его в шаблоне через функцию wp_enqueue_style():

<?php
if (is_category('news')) {
wp_enqueue_style('category-news', get_template_directory_uri() . '/category-news.css');
}
?>

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

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

Вопрос-ответ:

Как добавить рубрики на страницу сайта в WordPress?

Чтобы добавить рубрики на страницу в WordPress, нужно использовать виджет или код для отображения. Один из способов — добавить виджет «Рубрики» в боковую панель через раздел «Внешний вид» — «Виджеты». Если нужно вывести рубрики на самой странице, можно воспользоваться шорткодами или создать собственный шаблон для вывода рубрик в нужном месте.

Можно ли изменить внешний вид вывода рубрик на странице WordPress?

Да, внешний вид вывода рубрик можно настроить через кастомизацию темы или с помощью плагинов. Для этого нужно либо отредактировать стили CSS, либо использовать специализированные плагины, такие как «Category Posts Widget», которые позволяют гибко настроить отображение рубрик на страницах сайта.

Почему на странице не отображаются рубрики, хотя они есть в админке WordPress?

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

Как вывести только определенные рубрики на странице в WordPress?

Чтобы вывести только определенные рубрики, можно использовать шорткоды или запросы на PHP. Например, используя WP_Query, можно задать параметры для выборки постов только из нужных рубрик. Также можно настроить виджет «Категории», чтобы отображались только выбранные рубрики, либо использовать фильтры темы для более сложных настроек.

Какие плагины можно использовать для удобного отображения рубрик на страницах сайта?

Для удобного отображения рубрик можно использовать различные плагины, такие как «Category Posts Widget», который позволяет гибко настраивать вывод рубрик на страницах, или «List category posts», который дает возможность выводить посты из категорий на страницах и в постах. Оба плагина просты в настройке и хорошо работают с большинством тем.

Ссылка на основную публикацию