Как создать автоматическое отображение связанных постов в WordPress

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

Почему важно показывать связанные посты

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

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

Критерии выбора связанных записей

Чтобы блок был действительно полезен, нужно правильно подобрать логику, по которой WordPress будет определять похожие посты. Основные варианты:

  • По общим категориям и тегам
  • По схожим кастомным полям
  • По автору записи
  • По популярности или количеству просмотров (если есть счетчик)

Чаще всего используют категорию и теги, так как это стандартные таксономии и с ними проще работать.

Выбор по категориям и тегам

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

Реализация на PHP: функция для вывода связанных постов

Далее пример функции wpmarket_get_related_posts(), которая выводит список связанных постов по категориям и тегам.

function wpmarket_get_related_posts($post_id, $number = 5) {
    $categories = wp_get_post_categories($post_id);
    $tags = wp_get_post_tags($post_id, array('fields' => 'ids'));

    if (empty($categories) && empty($tags)) {
        return '';
    }

    $args = array(
        'post__not_in' => array($post_id),
        'posts_per_page' => $number,
        'ignore_sticky_posts' => 1,
        'orderby' => 'date',
        'order' => 'DESC',
        'tax_query' => array(
            'relation' => 'OR',
        ),
    );

    if (!empty($categories)) {
        $args['tax_query'][] = array(
            'taxonomy' => 'category',
            'field' => 'term_id',
            'terms' => $categories,
        );
    }

    if (!empty($tags)) {
        $args['tax_query'][] = array(
            'taxonomy' => 'post_tag',
            'field' => 'term_id',
            'terms' => $tags,
        );
    }

    $related_posts = new WP_Query($args);

    if (!$related_posts->have_posts()) {
        return '';
    }

    $output = '<div class="wpmarket-related-posts"><h3>Похожие записи</h3><ul>';
    while ($related_posts->have_posts()) {
        $related_posts->the_post();
        $output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
    }
    wp_reset_postdata();
    $output .= '</ul></div>';

    return $output;
}

Чтобы вывести связанные посты в шаблоне single.php, используйте:

echo wpmarket_get_related_posts(get_the_ID(), 5);

Оптимизация выборки связанных постов

По умолчанию WP_Query может быть тяжелым при большом количестве записей. Для ускорения стоит:

  • Использовать кэширование результатов с помощью Transient API или объекта кэша (Redis, Memcached)
  • Ограничить количество возвращаемых записей
  • Избегать запросов с большими tax_query с множеством условий

Пример кэширования функции с Transient API:

function wpmarket_get_related_posts_cached($post_id, $number = 5) {
    $cache_key = 'wpmarket_related_posts_' . $post_id;
    $cached = get_transient($cache_key);
    if ($cached !== false) {
        return $cached;
    }
    $output = wpmarket_get_related_posts($post_id, $number);
    set_transient($cache_key, $output, 12 * HOUR_IN_SECONDS);
    return $output;
}

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

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

  • Yet Another Related Posts Plugin (YARPP) — один из самых мощных и настраиваемых плагинов, поддерживает вывод по алгоритмам похожести и вручную.
  • Contextual Related Posts — простой и легкий плагин с возможностью кэширования и шаблонизации.
  • Related Posts for WordPress — с поддержкой Gutenberg и кастомных типов постов.

Для интеграции с WooCommerce, если у вас интернет-магазин на базе WordPress, стоит обратить внимание на плагины, которые показывают связанные товары, например, WPRemark.

Как интегрировать блок связанных постов в тему WordPress

Лучшее место для вывода связанных постов — внизу шаблона single.php после основного контента. Важно, чтобы блок был стилизован в соответствии с дизайном сайта. Для этого добавьте CSS:

.wpmarket-related-posts {
    margin-top: 40px;
    padding: 20px;
    border-top: 1px solid #ddd;
}
.wpmarket-related-posts h3 {
    margin-bottom: 15px;
    font-size: 1.5em;
}
.wpmarket-related-posts ul {
    list-style: disc;
    padding-left: 20px;
}
.wpmarket-related-posts li {
    margin-bottom: 8px;
}

Также можно расширить функционал, добавив вывод миниатюр к связанным постам, используя функцию get_the_post_thumbnail(). Например:

while ($related_posts->have_posts()) {
    $related_posts->the_post();
    $output .= '<li><a href="' . get_permalink() . '">';
    if (has_post_thumbnail()) {
        $output .= get_the_post_thumbnail(null, 'thumbnail');
    }
    $output .= get_the_title() . '</a></li>';
}

Выводы и рекомендации

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

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

Как создать автоматическое отображение связанных постов в WordPress
20.02.2026
Как создать автоматический импорт атрибутов в WooCommerce с помощью кода
04.04.2026
Как создать автоматическое удаление старых постов в WordPress по дате
31.01.2026
Как создать настройки для плагина с AJAX в WordPress
28.02.2026
Как создать динамический шорткод в WordPress с применением PHP
06.11.2025