WooCommerce: как исключить товары по метаданным из списка связанных товаров

Диагностика проблемы: почему нужно исключать товары из связанных товаров

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

Без правильного исключения таких товаров пользователь видит нерелевантные предложения, что снижает конверсию и ухудшает UX.

Пошаговое решение: фильтрация связанных товаров по метаданным

1. Определение метаданных для исключения

Сначала необходимо точно знать, по какому метаданному нужно исключать товары. Частые примеры:

  • _stock_status = 'outofstock' — исключаем товары, которых нет в наличии;
  • _visibility = 'hidden' — товары, скрытые из каталога;
  • custom_flag = 'exclude' — кастомное поле для исключения.

2. Добавление фильтра на запрос связанных товаров

Для изменения выборки связанных товаров используется фильтр woocommerce_related_products_args. В нем можно добавить дополнительные условия для исключения товаров по метаданным.

add_filter('woocommerce_related_products_args', 'exclude_products_by_meta_from_related', 10, 1); function exclude_products_by_meta_from_related($args) {     // Получаем ID текущего товара     $current_product_id = get_the_ID();      // Добавляем параметры meta_query для исключения товаров     $args['meta_query'] = array(         'relation' => 'AND',         array(             'key' => '_stock_status',             'value' => 'outofstock',             'compare' => '!='         ),         array(             'key' => 'custom_flag',             'value' => 'exclude',             'compare' => '!='         ),     );      // Чтобы исключить сам товар из списка связанных     $args['post__not_in'][] = $current_product_id;      return $args; }

3. Кэширование и производительность

Если у вас большой каталог, рекомендуется добавить кэширование результатов запроса через Transients API, чтобы снизить нагрузку на базу данных.

Проверка результата после внедрения

  • Откройте страницу товара, для которого вы применили фильтр.
  • Проверьте блок связанных товаров — исключённые по метаданным товары не должны отображаться.
  • Для дополнительной проверки можно временно вывести массив аргументов $args в фильтре с помощью error_log(print_r($args, true)).
  • Если товары с нужными метаданными всё ещё видны, проверьте правильность ключей и значений в meta_query.

Частые ошибки и как исправить

  • Неправильные ключи метаданных: Удостоверьтесь, что используете точные имена метаполей из базы данных. Проверьте через phpMyAdmin или плагин типа «Show Current Meta».
  • Отсутствие фильтра в нужном хуке: Используйте именно woocommerce_related_products_args для изменения связанных товаров, не перепутайте с другими фильтрами.
  • Конфликты с кэшированием: Если на сайте активны кеш-плагины, очистите кэш после внесения изменений.
  • Неправильное построение meta_query: Для исключения используйте 'compare' => '!=' и правильно указывайте значения.

Практические советы по безопасности и производительности

  • Не добавляйте сложные и многочисленные meta_query без необходимости, это замедляет запросы.
  • Используйте Transients API для кэширования результатов фильтрации, чтобы избежать повторных тяжелых запросов.
  • Всегда тестируйте изменения на копии сайта или staging-среде, чтобы не повлиять на живой магазин.
  • Регулярно проверяйте обновления WooCommerce и совместимость кастомных функций с ними.

Сравнение вариантов решения

Метод Плюсы Минусы
Фильтр woocommerce_related_products_args Гибко, легко интегрируется, минимальный код Может влиять на производительность при большом количестве условий
Кастомный запрос WP_Query для связанных товаров Полный контроль над выборкой Требует замены шаблонов, может конфликтовать с WooCommerce
Плагины типа YITH WooCommerce Related Products Готовое решение, простота настройки Меньше гибкости в фильтрации по метаданным, дополнительная нагрузка

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

⭐⭐⭐⭐⭐
YARPP фильтры и хуки для кастомизации выбора связанных записей в WordPress
19.11.2025
Автозаполнение ссылок в связанных записях YARPP: практическое руководство
04.01.2026
WooCommerce: как исключить товары по метаданным из списка связанных товаров
04.05.2026
YARPP не работает после обновления WordPress: как исправить проблему
06.12.2025
WooCommerce: как исключить товары по метаданным из списка связанных товаров
30.06.2026
×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее