Как добавить выбор родственных записей по мета-данным в YARPP

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

Почему важно использовать мета-данные для подбора связанных записей

Выбор связанных записей только на основе категорий и тегов не всегда даёт релевантный результат. Например, если у вас интернет-магазин на WooCommerce, то пользователи будут заинтересованы в товарах, которые имеют схожие характеристики, указанные в мета-полях, таких как «цвет», «размер», «бренд» и т.д.

Использование мета-данных позволяет значительно улучшить качество рекомендаций, увеличивая время, которое пользователь проводит на сайте, и повышая конверсию.

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

Как расширить YARPP для выбора записей с учётом мета-данных

Для добавления фильтрации по мета-данным в YARPP будем использовать фильтр yarpp_related_where. С его помощью можно добавить свои условия в SQL-запрос, который выбирает связанные записи.

Ниже приведён пример функции, которая добавляет условие по мета-ключу product_color и его значению:

function yarpp_add_meta_filter($where, $args) {
    global $wpdb;
    
    // Получаем текущий ID записи
    $post_id = $args['post_id'];
    
    // Получаем значение мета-поля product_color у текущей записи
    $color = get_post_meta($post_id, 'product_color', true);

    if ($color) {
        // Добавляем JOIN для подключения таблицы мета-данных
        $where .= " AND EXISTS (
            SELECT 1 FROM {$wpdb->postmeta} pm
            WHERE pm.post_id = {$wpdb->posts}.ID
            AND pm.meta_key = 'product_color'
            AND pm.meta_value = '" . esc_sql($color) . "'
        )";
    }
    return $where;
}
add_filter('yarpp_related_where', 'yarpp_add_meta_filter', 10, 2);

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

Добавление JOIN для оптимизации выборки

Чтобы запрос работал корректно и эффективно, возможно, потребуется добавить JOIN к таблице мета-данных. Для этого используйте фильтр yarpp_related_join:

function yarpp_add_meta_join($join, $args) {
    global $wpdb;
    
    $join .= " INNER JOIN {$wpdb->postmeta} pm ON pm.post_id = {$wpdb->posts}.ID ";
    return $join;
}
add_filter('yarpp_related_join', 'yarpp_add_meta_join', 10, 2);

Так YARPP сможет использовать данные из таблицы мета-данных в WHERE условии без ошибок.

Пример комплексного фильтра с несколькими мета-ключами

Допустим, нужно фильтровать записи по двум мета-ключам: product_color и product_brand. Можно расширить функцию следующим образом:

function yarpp_add_multiple_meta_filters($where, $args) {
    global $wpdb;
    $post_id = $args['post_id'];

    $color = get_post_meta($post_id, 'product_color', true);
    $brand = get_post_meta($post_id, 'product_brand', true);

    if ($color) {
        $where .= " AND EXISTS (
            SELECT 1 FROM {$wpdb->postmeta} pm_color
            WHERE pm_color.post_id = {$wpdb->posts}.ID
            AND pm_color.meta_key = 'product_color'
            AND pm_color.meta_value = '" . esc_sql($color) . "'
        )";
    }

    if ($brand) {
        $where .= " AND EXISTS (
            SELECT 1 FROM {$wpdb->postmeta} pm_brand
            WHERE pm_brand.post_id = {$wpdb->posts}.ID
            AND pm_brand.meta_key = 'product_brand'
            AND pm_brand.meta_value = '" . esc_sql($brand) . "'
        )";
    }

    return $where;
}
add_filter('yarpp_related_where', 'yarpp_add_multiple_meta_filters', 10, 2);

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

Использование плагинов для расширения YARPP

Если вы не хотите писать код самостоятельно, существуют плагины, которые расширяют функционал YARPP для работы с мета-данными. Например, Clearfy Pro предлагает много инструментов для оптимизации и кастомизации работы WordPress и плагинов, в том числе и YARPP.

Также полезны плагины для управления мета-полями, такие как Advanced Custom Fields (ACF), которые позволяют удобно создавать и редактировать мета-данные, чтобы потом использовать их в фильтрах YARPP.

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

Добавление сложных условий в SQL-запросы может замедлить работу сайта, особенно при большом количестве записей и мета-данных. Чтобы минимизировать нагрузку:

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

Выводы и практические советы

Использование мета-данных для подбора связанных записей в YARPP позволяет значительно повысить качество рекомендаций, делая их более релевантными и полезными для пользователей. Реализация через фильтры yarpp_related_where и yarpp_related_join — гибкий и эффективный способ расширить стандартный функционал плагина.

При внедрении обязательно тестируйте запросы на предмет производительности и корректности результатов. Используйте инструменты профилирования и кэширования для поддержки быстрого отклика сайта.

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

⭐⭐⭐⭐⭐
YARPP и Multisite: как синхронизировать связанные записи в мультисайтовой сети WordPress
18.01.2026
YARPP и AJAX: динамическая подгрузка связанных записей в WordPress
13.01.2026
Как добавить собственный тип записей в WordPress: практическое руководство с примерами кода
26.11.2025
YARPP и AJAX: динамическая подгрузка связанных записей в WordPress
31.01.2026
YARPP и WooCommerce: как сделать подбор связанных товаров в интернет-магазине
22.01.2026
×
Оптимизируй свой сайт!

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

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