Автоматическое отображение связанных записей в WordPress — это отличный способ повысить вовлеченность пользователей и увеличить время пребывания на сайте. В этой статье разберём, как быстро и эффективно реализовать такую функциональность на вашем сайте, используя как готовые плагины, так и собственные решения с кодом.
Зачем нужны связанные записи в WordPress
Связанные записи помогают пользователям найти дополнительный контент по интересующей их теме, улучшая внутреннюю перелинковку и SEO сайта. Это особенно актуально для блогов, новостных порталов и сайтов с большим количеством контента.
Реализация связанных записей позволяет:
- Увеличить количество просмотров страниц;
- Снизить показатель отказов;
- Улучшить поведенческие факторы;
- Оптимизировать структуру сайта для поисковых систем.
Готовые плагины для отображения связанных записей
Для быстрого внедрения можно использовать проверенные плагины. Вот несколько популярных решений:
- Yet Another Related Posts Plugin (YARPP) — мощный и гибкий плагин с множеством настроек и поддержкой кастомных типов записей.
- Contextual Related Posts — простой в настройке, поддерживает вывод связанных записей в виджетах и внутри контента.
- Related Posts for WordPress — легковесный и быстрый плагин с приятным дизайном.
Каждый из этих плагинов можно скачать и установить через админку WordPress. Однако у них есть ограничения по кастомизации и возможностям адаптации под уникальные задачи.
Собственное решение: как вывести связанные записи по таксономиям
Если хотите более гибко контролировать логику, лучше написать собственный код. Основной подход — выводить записи, которые имеют общие категории или теги с текущей записью.
Пример функции для вывода связанных записей по категориям
function wprobot_get_related_posts_by_category($post_id, $number = 5) {
$categories = wp_get_post_categories($post_id);
if (empty($categories)) {
return [];
}
$args = [
'category__in' => $categories,
'post__not_in' => [$post_id],
'posts_per_page' => $number,
'ignore_sticky_posts' => 1
];
$related_posts = get_posts($args);
return $related_posts;
}
Эта функция возвращает массив связанных записей из тех же категорий, исключая текущую запись.
Вывод связанных записей в шаблоне single.php
Вставьте следующий код в нужное место шаблона single.php, чтобы вывести заголовки связанных записей:
$related_posts = wprobot_get_related_posts_by_category(get_the_ID());
if (!empty($related_posts)) {
echo '<h3>Связанные записи</h3><ul>';
foreach ($related_posts as $post) {
setup_postdata($post);
echo '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>';
}
echo '</ul>';
wp_reset_postdata();
}
Улучшение релевантности: связанные записи по тегам и метаданным
Чтобы повысить точность подборки, можно учитывать не только категории, но и теги. Также полезно использовать пользовательские поля (метаданные), если на вашем сайте они активно применяются для структурирования контента.
Функция для связанных записей по тегам
function wprobot_get_related_posts_by_tags($post_id, $number = 5) {
$tags = wp_get_post_tags($post_id);
if (empty($tags)) {
return [];
}
$tag_ids = wp_list_pluck($tags, 'term_id');
$args = [
'tag__in' => $tag_ids,
'post__not_in' => [$post_id],
'posts_per_page' => $number,
'ignore_sticky_posts' => 1
];
$related_posts = get_posts($args);
return $related_posts;
}
Объединение категорий и тегов для более релевантных результатов
Можно объединить категории и теги через WP_Query с параметром tax_query:
function wprobot_get_related_posts_combined($post_id, $number = 5) {
$categories = wp_get_post_categories($post_id);
$tags = wp_get_post_tags($post_id);
if (empty($categories) && empty($tags)) {
return [];
}
$tag_ids = wp_list_pluck($tags, 'term_id');
$tax_query = ['relation' => 'OR'];
if ($categories) {
$tax_query[] = [
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $categories,
];
}
if ($tag_ids) {
$tax_query[] = [
'taxonomy' => 'post_tag',
'field' => 'term_id',
'terms' => $tag_ids,
];
}
$args = [
'post__not_in' => [$post_id],
'posts_per_page' => $number,
'ignore_sticky_posts' => 1,
'tax_query' => $tax_query
];
$query = new WP_Query($args);
return $query->posts;
}
Оптимизация и кэширование вывода связанных записей
При большом количестве контента запросы на связанные записи могут замедлять загрузку страниц. Чтобы избежать этого, используйте кэширование.
Простой способ — кэшировать результат функции с помощью Transients API:
function wprobot_get_related_posts_cached($post_id, $number = 5) {
$cache_key = 'wprobot_related_' . $post_id;
$related_posts = get_transient($cache_key);
if ($related_posts === false) {
$related_posts = wprobot_get_related_posts_combined($post_id, $number);
set_transient($cache_key, $related_posts, 12 * HOUR_IN_SECONDS);
}
return $related_posts;
}
Это значительно снизит нагрузку на базу данных и ускорит работу сайта.
Дополнительные советы и плагины для расширения функционала
Если вам нужна продвинутая аналитика или автоматизация, обратите внимание на плагин WPRemark, который позволяет собирать отзывы и взаимодействовать с пользователями, интегрируя рекомендации и связанные материалы.
Также полезным может быть ABC Pagination для красивой пагинации списков записей, включая связанные.
Вывод
Автоматическое отображение связанных записей — мощный инструмент улучшения UX и SEO. Используйте плагины для быстрого старта или создавайте гибкие решения на PHP, адаптированные под задачи вашего сайта. Не забывайте про оптимизацию и кэширование — это повысит скорость и стабильность работы.