AJAX Search for WooCommerce для вариаций (вариативных товаров)

Есть один замечательный плагин AJAX Search for WooCommerce. Плагин позволяет посетителям вашего сайта легко и быстро производить поиск по товарам. Он будет отображать результаты мгновенно при вводе запроса в поле поиска. Вы можете отобразить эту форму поиска в любом месте на странице.

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

AJAX Search for WooCommerce был разработан, чтобы максимально расширить возможности поиска для пользователей.

Возможности плагина

  • Поиск в названиях товаров, описаниях, отрывках, категориях, тегах или артикулах.
  • Миниатюра товара может отображаться для каждого предложения
  • Цена может отображаться для каждого предложения
  • Описание может отображаться для каждого предложения
  • Артикул (sku) может отображаться для каждого предложения
  • Кнопка «добавить в корзину» и мета отображается при наведении указателя мыши на предложение
  • Категории и теги в качестве предложений
  • Ограничение отображаемых предложений — вы можете установить свои собственные
  • Минимальное количество символов, необходимых для отображения предложений — вы можете установить свои собственные
  • Совместимость с WPML
  • Вы можете установить свою собственную надпись на кнопке поиска
  • Вы можете установить собственный прелоадер
  • Вы можете настроить собственную палитру для 10 основных элементов формы и предложений
  • Интеграция WP Tao — позволяет отслеживать и анализировать результаты поиска пользователей веб-сайта. Каждый клик по предложению регистрируется.

Доработка напильником для вариаций

Плагин с помощью фильров-хуков модифицирует стандартное поведение WP при поиске.
Хуки posts_search, posts_where, posts_distinct, posts_join — модифицируют SQL запросы.
Фильтр pre_get_posts модифицирует выдачу WP_Query.
Наша задача найти и заменить все вхождения значения параметров post_type с ‘product’ на [‘product’, ‘product_variation’], таким образом мы и добавим вариации в выдачу.
Изначально я пробовал заменить только константу DGWT_WCAS_WOO_PRODUCT_POST_TYPE, который автор плагина использовал для подстановки значения post_type.
Но позже пришлось отказаться от этого, константы объявляются там немного необычно, и почему-то не всегда своевременно, после хуков, соответственно были undefined.
Так что нужно искать и вхождения DGWT_WCAS_WOO_PRODUCT_POST_TYPE + не стоит забывать про несовместимость типов (было string, стало array), со всеми вытекающими.

Примеры таких замен:

$args = array(
        's'						 => $keyword,
        'post_type'				 => ['product', 'product_variation'], // было DGWT_WCAS_WOO_PRODUCT_POST_TYPE
        'post_status'			 => 'publish',
        'ignore_sticky_posts'	 => 1,
        'orderby'				 => $ordering_args[ 'orderby' ],
        'order'					 => $ordering_args[ 'order' ],
        'suppress_filters'		 => false
);
$query->query_vars[ 'post_type' ] = ['product', 'product_variation'];
$this->define( 'DGWT_WCAS_WOO_PRODUCT_POST_TYPE', ['product', 'product_variation'] );

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