Коротко — причина в том, что WooCommerce хранит видимость товаров в таксономии product_visibility. Значение "search" в UI соответствует терму product_visibility: exclude-from-catalog (товар виден только в поиске, но исключён из каталога). Плагин фильтра по-умолчанию может не добавлять эти товары в результаты. Поэтому нужно либо настроить сам Husky (если в настройках есть опция маппинга видимостей), либо дополнительно подправить запрос WP_Query — добавить в tax_query term exclude-from-catalog, когда выбран фильтр "search".
Пример простого кода, который можно вставить в functions.php дочерней темы или в небольшой плагин. Он проверяет GET-параметры (популярные имена) и если выбран visibility = search, добавляет в запрос товары с product_visibility = exclude-from-catalog:
```php
add_action( 'pre_get_posts', 'husky_include_search_visibility_products' );
function husky_include_search_visibility_products( $query ) {
if ( is_admin() || ! $query->is_main_query() ) {
return;
}
// Популярные имена параметра, которые может отправлять Husky
$param_names = array( 'visibility', 'pf_visibility', 'product_visibility' );
$vis = '';
foreach ( $param_names as $p ) {
if ( ! empty( $_GET[ $p ] ) ) {
$vis = sanitize_text_field( wp_unslash( $_GET[ $p ] ) );
break;
}
}
if ( ! $vis ) {
return;
}
// Если в фильтре выбран "search" — добавляем term 'exclude-from-catalog'
if ( strpos( $vis, 'search' ) === false && $vis !== 'search' ) {
return;
}
$tax_query = $query->get( 'tax_query' ) ?: array();
// Убедимся, что связь между clause'ами — OR, чтобы новый clause не "отсекал" результаты
if ( isset( $tax_query['relation'] ) ) {
$tax_query['relation'] = 'OR';
} else {
array_unshift( $tax_query, array( 'relation' => 'OR' ) );
}
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => array( 'exclude-from-catalog' ), // это и есть "search" видимость
'operator' => 'IN',
);
$query->set( 'tax_query', $tax_query );
}
```
Несколько замечаний:
- Подставьте реальное имя GET‑параметра, которое использует ваш Husky (обычно это visibility или pf_visibility). Если не уверены — посмотрите URL при применении фильтра в каталоге.
- Код добавляет term 'exclude-from-catalog' (видимость "search"). Если нужно, можно добавить и другие термы или менять логику.
- Помещайте код в functions.php дочерней темы или в свой плагин; делайте резервную копию перед изменениями.
- После правки очистите кеш (если используется кеширование) и протестируйте фильтры.
Если хотите, могу:
- Подогнать код под точный параметр, который использует ваш Husky (вставьте пример URL с фильтром).
- Дать вариант кода, если Husky предоставляет свой хук для модификации запроса (тогда решение будет чище).