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

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

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

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

  • Изменять SQL-запросы, которые выбирают связанные записи
  • Фильтровать массив результатов перед выводом
  • Добавлять свои критерии отбора и сортировки
  • Внедрять дополнительную логику по отображению

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

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

Рассмотрим ключевые фильтры, которые помогут изменить поведение плагина.

yarpp_related_filter — фильтр выборки SQL

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

add_filter('yarpp_related_filter', 'yarppru_filter_related_sql', 10, 2);
function yarppru_filter_related_sql($query, $post) {
    // Исключаем записи из категории с ID 5
    $query .= " AND ID NOT IN (SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id = 5)";
    return $query;
}

В этом примере SQL дополняется условием исключения записей из категории 5. Такой подход позволяет гибко управлять выборкой.

yarpp_related_query_args — фильтрация аргументов WP_Query

Если вы предпочитаете работать через WP_Query, этот фильтр позволяет изменить параметры запроса. Например, добавить сортировку по дате или метаданным.

add_filter('yarpp_related_query_args', 'yarppru_modify_query_args', 10, 2);
function yarppru_modify_query_args($args, $post) {
    // Сортируем связанные записи по дате публикации по убыванию
    $args['orderby'] = 'date';
    $args['order'] = 'DESC';
    return $args;
}

Это удобно, если вы хотите вывести самые свежие связанные материалы.

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

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

add_filter('yarpp_related', 'yarppru_filter_related_array', 10, 2);
function yarppru_filter_related_array($related_posts, $post) {
    // Удаляем записи с заголовком длиной меньше 10 символов
    foreach ($related_posts as $key => $related) {
        if (strlen($related->post_title) < 10) {
            unset($related_posts[$key]);
        }
    }
    return $related_posts;
}

Пример: добавляем фильтрацию по кастомному полю в YARPP

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

add_filter('yarpp_related_filter', 'yarppru_filter_by_custom_field', 10, 2);
function yarppru_filter_by_custom_field($query, $post) {
    global $wpdb;
    $meta_key = 'related_group';
    $meta_value = get_post_meta($post->ID, $meta_key, true);
    if (!$meta_value) {
        return $query; // если поле пустое, не меняем запрос
    }

    $query .= $wpdb->prepare(
        " AND ID IN (
            SELECT post_id FROM {$wpdb->postmeta}
            WHERE meta_key = %s AND meta_value = %s
        )",
        $meta_key,
        $meta_value
    );
    return $query;
}

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

Оптимизация производительности YARPP при кастомизации

Добавление сложных условий в запросы может замедлять сайт, особенно при большом объёме записей. Вот несколько советов, как минимизировать нагрузку:

  • Используйте индексацию в базе данных для кастомных полей, которые применяете в запросах
  • Кэшируйте результаты выборки, например, с помощью Transient API WordPress
  • Ограничивайте количество связанных записей, выводимых на странице
  • Проверяйте запросы через инструменты профилирования, чтобы выявить узкие места

Пример кэширования результатов YARPP:

add_filter('yarpp_related', 'yarppru_cache_related_results', 10, 2);
function yarppru_cache_related_results($related_posts, $post) {
    $cache_key = 'yarpp_related_' . $post->ID;
    set_transient($cache_key, $related_posts, 12 * HOUR_IN_SECONDS);
    return $related_posts;
}

// В функции получения связанных записей сначала пытаемся получить из кэша
function yarppru_get_related_cached($post_id) {
    $cache_key = 'yarpp_related_' . $post_id;
    $related = get_transient($cache_key);
    if (false === $related) {
        // Здесь вызываем стандартный вывод YARPP или получаем данные
        $related = yarpp_get_related($post_id);
        set_transient($cache_key, $related, 12 * HOUR_IN_SECONDS);
    }
    return $related;
}

Полезные плагины для работы с YARPP и связанной выборкой

Кроме базового функционала YARPP, можно использовать дополнительные плагины для расширения возможностей:

  • Clearfy Pro — оптимизация и очистка WordPress, совместим с YARPP, помогает ускорить работу связанных записей
  • Expert Review — позволяет добавить рейтинги и отзывы к связанным материалам, что улучшает вовлечённость
  • WPCommunity — расширяет возможности пользовательского взаимодействия, включая рекомендации связанных тем

Использование этих плагинов в связке с кастомными хуками YARPP позволяет создавать мощные и удобные системы рекомендаций для пользователей.

Заключение

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

Если хотите скачать плагин YARPP или другие полезные инструменты, рекомендуем посетить WPSHOP.ru — здесь собраны проверенные решения для вашего WordPress.

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

⭐⭐⭐⭐⭐
Как добавить автоматическое открытие и закрытие аккордеона в WordPress
14.03.2026
WooCommerce: как исключить товары по метаданным из списка связанных товаров
26.05.2026
YARPP и WooCommerce: как сделать подбор связанных товаров в интернет-магазине
22.01.2026
Как автоматизировать создание связанных записей по ключевым словам в WordPress
09.04.2026
Как создать автоматические связи между записями по тегам в WordPress
07.02.2026
×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙