Как создать автоматический раздел с соответствующими постами в WordPress по меткам и категориям

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

Почему важно создавать автоматические разделы с релевантным контентом

Автоматические разделы с постами по определённым тематическим признакам позволяют:

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

Реализовать это можно разными способами — от простых виджетов до сложных кастомных шаблонов. Ниже мы подробно рассмотрим практические варианты.

Создание кастомного запроса для вывода релевантных постов

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

Основной код для вывода похожих постов по меткам

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

function wpbloger_get_related_posts_by_tags($post_id, $number = 5) {
  $tags = wp_get_post_tags($post_id);
  if (!$tags) return [];

  $tag_ids = array_map(function($tag) { return $tag->term_id; }, $tags);

  $args = [
    'tag__in' => $tag_ids,
    'post__not_in' => [$post_id],
    'posts_per_page' => $number,
    'ignore_sticky_posts' => true
  ];

  $query = new WP_Query($args);
  return $query->posts;
}

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

$related_posts = wpbloger_get_related_posts_by_tags(get_the_ID());
if ($related_posts) {
  echo '<ul>';
  foreach ($related_posts as $post) {
    echo '<li><a href="' . get_permalink($post) . '">' . esc_html(get_the_title($post)) . '</a></li>';
  }
  echo '</ul>';
}

Вывод похожих постов по категориям

Аналогично можно сделать вывод по категориям:

function wpbloger_get_related_posts_by_categories($post_id, $number = 5) {
  $categories = wp_get_post_categories($post_id);
  if (!$categories) return [];

  $args = [
    'category__in' => $categories,
    'post__not_in' => [$post_id],
    'posts_per_page' => $number,
    'ignore_sticky_posts' => true
  ];

  $query = new WP_Query($args);
  return $query->posts;
}

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

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

Если не хочется писать код, можно воспользоваться надёжными плагинами, которые позволяют выводить похожие посты:

  • Contextual Related Posts — бесплатный и популярный плагин, который выводит похожие записи на основе содержимого и таксономий.
  • Related Posts for WordPress — простой в настройке плагин с возможностью кеширования запросов.
  • WPGPT — если у вас есть интерес к AI-тематике, этот плагин позволяет создавать умные рекомендации и автоматизировать подбор релевантного контента, используя искусственный интеллект. Подробнее на официальном сайте.

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

Пример создания виджета с автоматическим выводом релевантных постов

Рассмотрим, как создать простой виджет, который будет показывать релевантные по тегам посты текущей записи.

class WPBloger_Related_Posts_Widget extends WP_Widget {
  public function __construct() {
    parent::__construct('wpbloger_related_posts', 'Релевантные посты WPBloger');
  }

  public function widget($args, $instance) {
    if (!is_single()) return;
    $post_id = get_the_ID();
    $posts = wpbloger_get_related_posts_by_tags($post_id, 5);
    if (!$posts) return;

    echo $args['before_widget'];
    echo $args['before_title'] . 'Похожие записи' . $args['after_title'];
    echo '<ul>';
    foreach ($posts as $post) {
      echo '<li><a href="' . get_permalink($post) . '">' . esc_html(get_the_title($post)) . '</a></li>';
    }
    echo '</ul>';
    echo $args['after_widget'];
  }
}

function wpbloger_register_related_posts_widget() {
  register_widget('WPBloger_Related_Posts_Widget');
}
add_action('widgets_init', 'wpbloger_register_related_posts_widget');

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

Оптимизация и кеширование запросов для автоматических разделов

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

  • Использовать встроенное кеширование WP_Query с помощью Transients API.
  • Применять плагины кеширования страниц и объектов.
  • Ограничивать количество выводимых постов.

Пример кеширования результатов функции:

function wpbloger_get_related_posts_by_tags_cached($post_id, $number = 5) {
  $cache_key = 'wpbloger_related_posts_' . $post_id;
  $cached = get_transient($cache_key);
  if ($cached !== false) {
    return $cached;
  }

  $posts = wpbloger_get_related_posts_by_tags($post_id, $number);
  set_transient($cache_key, $posts, 12 * HOUR_IN_SECONDS);
  return $posts;
}

Это значительно снизит количество запросов к базе данных и ускорит загрузку страниц.

Итоги и рекомендации

Создание автоматических разделов с соответствующими постами в WordPress — полезный приём для улучшения UX и SEO. Реализовать его можно как на уровне кода, так и с помощью готовых плагинов. Важно учитывать нагрузку и оптимизировать запросы.

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как изменить URL автора в WordPress без плагинов
25.01.2026
Как изменить структуру URL для виджетов в WordPress
25.02.2026
Как удалить или изменить метаданные медиафайлов в WordPress без плагинов
20.02.2026
Как удалить виджеты из WordPress, чтобы не потерять данные
22.12.2025
Как решить проблему замедления WooCommerce при большом количестве продуктов
09.06.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше