Автоматическое отображение связанных записей в WordPress — востребованная функция, которая улучшает навигацию по сайту и увеличивает вовлечённость пользователей. В этой статье разберём, как реализовать такой блок без использования громоздких плагинов, опираясь на стандартные возможности WordPress: таксономии, пользовательские поля и WP_Query. Кроме того, рассмотрим несколько полезных плагинов для расширения функционала.
Почему важно показывать связанные записи
Показывая посетителям материалы, связанные по теме, вы повышаете время их пребывания на сайте, снижаете показатель отказов и улучшаете SEO-показатели. Например, если пользователь читает статью про оптимизацию WordPress, полезно предложить ему другие материалы на смежные темы.
Важный момент — определить критерии связи. Чаще всего это общие категории, теги или пользовательские таксономии. Также можно использовать метаданные (пользовательские поля) для более точного отбора.
Основные подходы к реализации блока связанных записей
Связь по категориям и тегам
Самый простой способ — выбрать записи, которые имеют хотя бы одну общую категорию или тег с текущей записью.
Ниже пример функции wpcat_get_related_posts_by_taxonomy(), которая получает связанные записи по категориям:
function wpcat_get_related_posts_by_taxonomy($post_id, $taxonomy = 'category', $limit = 5) {
$terms = wp_get_post_terms($post_id, $taxonomy, array('fields' => 'ids'));
if (empty($terms) || is_wp_error($terms)) {
return array();
}
$query = new WP_Query(array(
'post_type' => get_post_type($post_id),
'posts_per_page' => $limit,
'post__not_in' => array($post_id),
'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'field' => 'term_id',
'terms' => $terms,
),
),
));
return $query->posts;
}Далее можно вывести полученные записи в любом удобном формате.
Связь через пользовательские поля
Если требуется более специфичная логика, например, связать записи по определённому значению метаполя, можно использовать meta_query в WP_Query.
function wpcat_get_related_posts_by_meta($post_id, $meta_key, $limit = 5) {
$meta_value = get_post_meta($post_id, $meta_key, true);
if (empty($meta_value)) {
return array();
}
$query = new WP_Query(array(
'post_type' => get_post_type($post_id),
'posts_per_page' => $limit,
'post__not_in' => array($post_id),
'meta_query' => array(
array(
'key' => $meta_key,
'value' => $meta_value,
'compare' => '=',
),
),
));
return $query->posts;
}Такой метод поможет, например, показывать записи с одинаковым автором, проектом, продуктом и т.д.
Вывод блока связанных записей в шаблоне
Для вывода результатов достаточно цикл WordPress:
$related_posts = wpcat_get_related_posts_by_taxonomy(get_the_ID());
if (!empty($related_posts)) {
echo '<div class="related-posts"><h3>Похожие материалы</h3><ul>';
foreach ($related_posts as $post) {
setup_postdata($post);
echo '<li><a href="' . get_permalink($post) . '">' . get_the_title($post) . '</a></li>';
}
echo '</ul></div>';
wp_reset_postdata();
}Можно оформить вывод с помощью CSS или применить кастомный шаблон для блока.
Полезные плагины для расширения функционала связанных записей
Если хочется готового решения с настройками — рассмотрите плагины:
- Yet Another Related Posts Plugin (YARPP) — позволяет выводить связанные записи с множеством настроек и шаблонов.
- Related Posts for WordPress — лёгкий и быстрый плагин с возможностью кэширования результата.
- WPGPT от WPSHOP — если хотите интегрировать AI для умного подбора похожих материалов, этот плагин поможет сгенерировать ссылки на релевантные записи.
Оптимизация и кеширование
Запросы к базе данных при отображении связанных записей могут нагрузить сайт. Чтобы избежать снижения скорости, рекомендуется кешировать результаты. Это можно сделать, например, с помощью Transients API:
function wpcat_get_related_posts_cached($post_id, $taxonomy = 'category', $limit = 5) {
$cache_key = 'wpcat_related_' . $post_id;
$related = get_transient($cache_key);
if ($related === false) {
$related = wpcat_get_related_posts_by_taxonomy($post_id, $taxonomy, $limit);
set_transient($cache_key, $related, 12 * HOUR_IN_SECONDS);
}
return $related;
}Такой подход снижает количество запросов и ускоряет загрузку страниц.
Итог
Создать автоматическое отображение блока связанных записей в WordPress можно разными способами — от простого выбора по категориям до сложных алгоритмов с использованием пользовательских полей и AI. Главное — подобрать логику под задачи сайта и позаботиться об оптимизации. Используйте примеры кода из статьи, а также рекомендуемые плагины, чтобы улучшить пользовательский опыт и SEO вашего ресурса.