YARPP фильтры и хуки для кастомизации выбора связанных записей в WordPress

Плагин Yet Another Related Posts Plugin (YARPP) — один из самых популярных инструментов для вывода связанных записей в WordPress. Несмотря на удобный интерфейс и готовые настройки, часто возникает необходимость глубже кастомизировать алгоритм подбора и отображения связанных материалов. Для этого YARPP предоставляет набор фильтров и хуков, которые позволяют изменять логику работы плагина без правки исходного кода.

Что такое фильтры и хуки в YARPP и зачем они нужны

В WordPress фильтры (filters) и действия (actions/hooks) — это механизмы расширения и модификации поведения плагинов и темы без изменения их исходников. YARPP реализует множество таких точек расширения, благодаря которым можно:

  • изменять SQL-запрос, который выбирает связанные записи;
  • фильтровать список найденных записей перед выводом;
  • настраивать HTML-разметку вывода;
  • управлять кэшированием и прочими внутренними процессами.

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

Основные фильтры YARPP для изменения выбора связанных записей

Рассмотрим ключевые фильтры, которые помогают влиять на подбор похожих материалов.

yarpp_pre_get_related — изменение SQL-запроса

Этот фильтр позволяет полностью заменить SQL-запрос, который YARPP использует для поиска связанных записей. Используйте его, если хотите реализовать свою логику подбора.

function yarpp_custom_pre_get_related($query, $post_id, $args) {
    global $wpdb;
    // Пример: выводим 5 последних записей из той же категории
    $sql = $wpdb->prepare(
        "SELECT ID, post_title FROM $wpdb->posts p
         INNER JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id)
         WHERE p.post_status = 'publish'
           AND p.ID != %d
           AND tr.term_taxonomy_id IN (SELECT term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id = %d)
         ORDER BY post_date DESC
         LIMIT 5",
        $post_id, $post_id
    );
    return $sql;
}
add_filter('yarpp_pre_get_related', 'yarpp_custom_pre_get_related', 10, 3);

В данном примере мы выводим 5 последних записей из тех же категорий, что и текущая запись, игнорируя стандартный алгоритм YARPP.

yarpp_related — фильтрация массива связанных записей

Если SQL-запрос устраивает, но нужно отфильтровать или дополнительно обработать массив найденных записей, используйте этот фильтр.

function yarpp_custom_related_filter($related_posts, $post_id, $args) {
    // Например, исключаем записи с определённым ID
    return array_filter($related_posts, function($post) {
        return $post->ID !== 42;
    });
}
add_filter('yarpp_related', 'yarpp_custom_related_filter', 10, 3);

Кастомизация вывода: изменение шаблонов и HTML с помощью хуков

YARPP позволяет не только выбирать связанные записи, но и настраивать их вывод. Для этого предусмотрены фильтры, меняющие HTML-разметку.

yarpp_template_vars — добавление своих переменных в шаблон

С помощью этого фильтра можно передать дополнительные данные в шаблон вывода.

function yarpp_custom_template_vars($vars, $post_id, $args) {
    $vars['custom_message'] = 'Похожие записи, подобранные специально для вас';
    return $vars;
}
add_filter('yarpp_template_vars', 'yarpp_custom_template_vars', 10, 3);

yarpp_template — выбор собственного шаблона вывода

Если вас не устраивают стандартные шаблоны, можно создать свой и подключить его через этот фильтр.

function yarpp_custom_template($template, $args) {
    // Путь к кастомному шаблону в теме
    $custom_template = get_stylesheet_directory() . '/yarpp-custom-template.php';
    if (file_exists($custom_template)) {
        return $custom_template;
    }
    return $template;
}
add_filter('yarpp_template', 'yarpp_custom_template', 10, 2);

Практические советы по работе с фильтрами YARPP

При работе с хуками и фильтрами плагина YARPP стоит учесть несколько важных моментов:

  • Всегда тестируйте изменения на локальной копии сайта, чтобы избежать сбоев на живом ресурсе.
  • Используйте child-тему или отдельный плагин для добавления кастомного кода, чтобы не потерять изменения при обновлениях.
  • Применяйте дебаг и логирование для отладки SQL-запросов и фильтрованных данных.
  • Оптимизируйте запросы, чтобы не ухудшать производительность сайта — YARPP может вызывать нагрузку при большом количестве записей.

Дополнительные плагины для расширения возможностей YARPP

Для более гибкого управления связанными записями можно использовать дополнения к YARPP или альтернативные плагины.

  • YARPP Cache: улучшает производительность за счёт кэширования результатов.
  • YARPP Template Editor: удобный визуальный редактор шаблонов вывода.
  • Contextual Related Posts: альтернативный плагин с другим алгоритмом подбора.

Выбирая инструмент, ориентируйтесь на задачи сайта и возможности хостинга.

Заключение

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
YARPP настройка и оптимизация подбора связанных записей в WordPress
10.11.2025
Как создать собственный виджет в WordPress: пошаговое руководство
03.11.2025
WooCommerce: как исключить товары по метаданным из списка связанных товаров
15.05.2026
Автопостинг WordPress: как автоматизировать публикации с помощью плагинов и кода
23.11.2025
WooCommerce: как исключить товары по метаданным из списка связанных товаров
02.06.2026
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙