Одной из важных задач для повышения вовлечённости пользователей и улучшения внутренней перелинковки сайта является вывод связанных записей, которые тематически близки к текущему материалу. В этой статье мы подробно рассмотрим, как автоматизировать создание связанных записей в WordPress на основе ключевых слов, используя как готовые решения, так и кастомный код.
Почему важно использовать ключевые слова для связанных записей
Традиционные методы связки записей по категориям или тегам часто не дают идеального результата, так как ключевые слова точнее отражают суть контента. Автоматический подбор связанных записей по ключевым словам помогает улучшить релевантность рекомендаций и повысить время пребывания посетителей на сайте.
Ключевые слова можно хранить в различных местах записи: в мета-полях, в содержимом, в тегах или в специальных custom fields. Для удобства и гибкости лучше использовать мета-поля или таксономии.
Плагины для автоматизации связанных записей по ключевым словам
Существуют плагины, которые могут упростить задачу, например:
- Related Posts for WordPress – поддерживает подбор похожих записей на основе ключевых слов и мета-данных.
- Contextual Related Posts – использует контекст статьи, в том числе ключевые слова, для выбора связанных материалов.
- Clearfy Pro – предлагает настройки оптимизации и расширенные инструменты для автоматизации вывода связанных записей.
Однако, для полного контроля и кастомизации полезно реализовать собственное решение на PHP.
Код для автоматического подбора связанных записей по ключевым словам
Рассмотрим пример функции, которая получает ключевые слова из пользовательского мета-поля yarpp_keywords и выводит связанные записи, в которых эти слова встречаются в заголовках или содержимом.
function yarpp_ru_get_related_by_keywords($post_id, $number = 5) {
// Получаем ключевые слова из мета-поля
$keywords = get_post_meta($post_id, 'yarpp_keywords', true);
if (empty($keywords)) {
return [];
}
// Преобразуем строку ключевых слов в массив и экранируем
$keywords_array = array_map('esc_sql', array_map('trim', explode(',', $keywords)));
// Формируем запрос WP_Query с поиском по ключевым словам в заголовках и содержимом
$args = [
'post_type' => 'post',
'posts_per_page' => $number,
'post__not_in' => [$post_id],
's' => implode(' ', $keywords_array),
'ignore_sticky_posts' => true
];
$query = new WP_Query($args);
return $query->posts;
}
// Вывод связанных записей с ссылками
function yarpp_ru_display_related_keywords() {
global $post;
$related_posts = yarpp_ru_get_related_by_keywords($post->ID);
if (empty($related_posts)) {
echo '<p>Похожие записи не найдены.</p>';
return;
}
echo '<ul class="yarpp-related-keywords">';
foreach ($related_posts as $related) {
$title = esc_html(get_the_title($related->ID));
$permalink = esc_url(get_permalink($related->ID));
echo "<li><a href=\"{$permalink}\">{$title}</a></li>";
}
echo '</ul>';
}
Данный код ищет записи, содержащие в текстах ключевые слова, указанные для текущей записи. Это простой, но эффективный способ расширить функционал связанных записей.
Расширение: хранение ключевых слов в мета-полях и интеграция с админкой
Для удобного использования стоит добавить возможность редактирования ключевых слов в админке. Используйте следующий пример добавления мета-бокса:
function yarpp_ru_add_keywords_metabox() {
add_meta_box('yarpp_keywords_metabox', 'Ключевые слова для связанных записей', 'yarpp_ru_keywords_metabox_callback', 'post', 'normal', 'default');
}
add_action('add_meta_boxes', 'yarpp_ru_add_keywords_metabox');
function yarpp_ru_keywords_metabox_callback($post) {
$value = get_post_meta($post->ID, 'yarpp_keywords', true);
echo '<label for="yarpp_keywords">Введите ключевые слова через запятую:</label><br />';
echo '<input type="text" id="yarpp_keywords" name="yarpp_keywords" value="' . esc_attr($value) . '" style="width:100%;" />';
}
function yarpp_ru_save_keywords_metabox($post_id) {
if (array_key_exists('yarpp_keywords', $_POST)) {
update_post_meta($post_id, 'yarpp_keywords', sanitize_text_field($_POST['yarpp_keywords']));
}
}
add_action('save_post', 'yarpp_ru_save_keywords_metabox');
Так вы сможете гибко управлять ключевыми словами для каждой записи без необходимости напрямую трогать базу данных.
Оптимизация и кэширование результатов
Поиск по содержимому и ключевым словам — ресурсоёмкая операция, особенно на больших сайтах. Чтобы избежать замедления страницы, рекомендуется кэшировать результаты запроса. Для этого можно использовать Transients API WordPress:
function yarpp_ru_get_related_by_keywords_cached($post_id, $number = 5) {
$cache_key = 'yarpp_related_' . $post_id;
$related = get_transient($cache_key);
if ($related !== false) {
return $related;
}
$related = yarpp_ru_get_related_by_keywords($post_id, $number);
set_transient($cache_key, $related, 12 * HOUR_IN_SECONDS); // кэш на 12 часов
return $related;
}
Использование кэша значительно повысит производительность и снизит нагрузку на базу данных.
Интеграция с AJAX для динамического обновления связанных записей
Для улучшения UX можно реализовать подгрузку связанных записей без перезагрузки страницы. Пример AJAX-запроса:
// PHP: обработчик AJAX
add_action('wp_ajax_yarpp_ru_load_related', 'yarpp_ru_ajax_load_related');
add_action('wp_ajax_nopriv_yarpp_ru_load_related', 'yarpp_ru_ajax_load_related');
function yarpp_ru_ajax_load_related() {
$post_id = intval($_POST['post_id']);
$related_posts = yarpp_ru_get_related_by_keywords_cached($post_id);
if (empty($related_posts)) {
wp_send_json_error('Похожие записи не найдены.');
}
ob_start();
echo '<ul class="yarpp-related-keywords">';
foreach ($related_posts as $related) {
$title = esc_html(get_the_title($related->ID));
$permalink = esc_url(get_permalink($related->ID));
echo "<li><a href=\"{$permalink}\">{$title}</a></li>";
}
echo '</ul>';
$html = ob_get_clean();
wp_send_json_success($html);
}
// JS: пример вызова AJAX (jQuery)
jQuery(document).ready(function($){
var postId = $('#post-id').val(); // допустим, у вас есть скрытое поле с ID
$.post(ajaxurl, {action:'yarpp_ru_load_related', post_id: postId}, function(response){
if(response.success){
$('#related-posts-container').html(response.data);
} else {
$('#related-posts-container').html('<p>' + response.data + '</p>');
}
});
});
Такой подход сделает сайт более интерактивным и снизит время загрузки при переходе по статьям.
Заключение по автоматизации связанных записей по ключевым словам
Автоматизация создания связанных записей на базе ключевых слов позволяет значительно улучшить качество внутренних ссылок и повысить удобство пользователей. Комбинируя мета-поля, кастомный код и плагины, можно добиться гибкой и производительной системы рекомендаций.
Для оптимизации и расширения функционала рекомендуем обратить внимание на Clearfy Pro и другие инструменты с сайта wpshop.ru, которые помогут упростить задачи оптимизации и управления вашим сайтом на WordPress.