Плагин YARPP (Yet Another Related Posts Plugin) — один из самых популярных инструментов для вывода связанных записей в WordPress. Он помогает удерживать посетителей на сайте, предлагая им релевантный контент, что положительно сказывается на поведенческих факторах и SEO. Однако при неправильной настройке он может существенно замедлить сайт. В этой статье мы подробно разберём, как правильно настроить YARPP и оптимизировать его работу, а также рассмотрим примеры кастомизации вывода связанных записей с помощью кода.
Что такое YARPP и зачем нужна его оптимизация
YARPP анализирует содержимое записей, используя алгоритмы сравнения заголовков, тегов, категорий и содержимого, чтобы найти наиболее релевантные материалы. По умолчанию плагин может стать причиной высокой нагрузки на базу данных, особенно на больших сайтах с тысячами записей.
Оптимизация требуется для того, чтобы:
- снизить нагрузку на сервер и ускорить работу сайта;
- повысить релевантность выдачи связанных записей;
- упростить кастомизацию внешнего вида и функционала;
- избежать конфликтов с другими плагинами и темами.
Основные настройки YARPP: что важно учитывать
Выбор алгоритма подбора связанных записей
В настройках YARPP есть возможность выбирать тип контента для поиска и веса параметров (заголовок, содержимое, категории, теги). Чем точнее вы настроите веса, тем релевантнее будет выдача.
Пример настройки веса через фильтр в functions.php темы:
function yarpp_ru_custom_weights($args) {
$args['title_weight'] = 3; // Увеличиваем вес заголовка
$args['content_weight'] = 2;
$args['category_weight'] = 1;
$args['tag_weight'] = 1.5;
return $args;
}
add_filter('yarpp_related_weight', 'yarpp_ru_custom_weights');Такой подход позволяет гибко управлять алгоритмом подбора без изменения настроек в админке.
Ограничение количества связанных записей и длины запроса
По умолчанию YARPP может пытаться вывести слишком много связанных записей, что приводит к долгим запросам к базе. Рекомендуется выставлять лимит в пределах 3-5 для сохранения баланса между релевантностью и производительностью.
В настройках плагина укажите количество выводимых записей, а также включите кэширование, если оно доступно.
Оптимизация производительности YARPP на больших сайтах
Использование кэширования результатов
Для снижения нагрузки на базу полезно включить кэширование результатов подбора связанных записей. YARPP поддерживает внутренний кэш, но на больших сайтах лучше использовать внешние решения, например, объектный кэш Redis или Memcached.
Пример включения объектного кэша в wp-config.php:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
// Далее подключаем плагин Redis Object Cache из репозитория WordPressПосле этого запросы YARPP будут кэшироваться в памяти, что значительно ускорит выдачу.
Ограничение области поиска связанных записей
Если у вас большой сайт с множеством категорий, имеет смысл ограничить поиск связанных записей конкретными категориями или типами записей, чтобы уменьшить нагрузку.
Пример фильтрации по категориям в коде:
function yarpp_ru_filter_categories($query) {
// Указываем ID категорий для поиска
$query['category__in'] = array(12, 23, 45);
return $query;
}
add_filter('yarpp_related_query_args', 'yarpp_ru_filter_categories');Кастомизация вывода связанных записей с помощью шаблонов
YARPP позволяет создавать собственные шаблоны вывода, что даёт полный контроль над HTML-разметкой и стилями. Для этого создайте папку yarpp-template в корне активной темы и там разместите файлы шаблонов, например, yarpp-template-default.php.
Пример простого шаблона вывода с миниатюрой и названием записи:
<ul class="yarpp-list">
<?php foreach ($related_posts as $post) : ?>
<li>
<a href="<?php echo get_permalink($post) ?>"><?php echo get_the_post_thumbnail($post, 'thumbnail'); ?></a>
<a href="<?php echo get_permalink($post) ?>"><?php echo esc_html(get_the_title($post)); ?></a>
</li>
<?php endforeach; ?>
</ul>Чтобы использовать свой шаблон, в настройках YARPP укажите его имя. Это позволит улучшить внешний вид и адаптировать вывод под дизайн сайта.
Расширенные возможности: добавление пользовательских фильтров и функций
Добавление собственного критерия релевантности
Иногда стандартных параметров YARPP недостаточно. Можно добавить свой критерий, например, учитывать пользовательские поля (custom fields) или таксономии.
Пример добавления веса по пользовательскому полю yarpp_custom_field:
function yarpp_ru_custom_field_weight($args, $post_id) {
global $wpdb;
$custom_value = get_post_meta($post_id, 'yarpp_custom_field', true);
if (!$custom_value) return $args;
// Добавляем вес если совпадает по кастомному полю
$args['custom_field_weight'] = 2;
return $args;
}
add_filter('yarpp_related_weight', 'yarpp_ru_custom_field_weight', 10, 2);Фильтрация связей перед выводом
Можно программно отфильтровать результаты YARPP перед выводом, например, исключить записи с определёнными метками или по дате публикации.
function yarpp_ru_filter_results($related) {
foreach ($related as $key => $post) {
if (has_tag('exclude', $post->ID) || strtotime($post->post_date) < strtotime('-1 year')) {
unset($related[$key]);
}
}
return $related;
}
add_filter('yarpp_related', 'yarpp_ru_filter_results');Подводим итоги: рекомендации по использованию YARPP на практике
Для эффективного применения YARPP на вашем сайте придерживайтесь следующих правил:
- Настраивайте веса параметров для точного подбора;
- Ограничивайте количество выводимых связанных записей;
- Используйте кэширование на уровне базы данных и объекта;
- Создавайте собственные шаблоны для вывода;
- Добавляйте кастомные фильтры для расширения функционала;
- Тестируйте производительность и корректность работы после каждой настройки.
Соблюдение этих рекомендаций позволит улучшить пользовательский опыт и оптимизировать работу сайта на WordPress с плагином YARPP.