Thank you, everything worked using GPT – here is the code:
// Make the Husky product filter work with page builder layouts
add_action(‘pre_get_posts’, function ($query) {
// Проверяем, является ли запрос объектом и установлен ли тип записи
if (is_object($query) && isset($query->query[‘post_type’])) {
// Проверяем, является ли тип записи “product”
if ($query->query[‘post_type’] === ‘product’) {
// Проверяем, установлен ли параметр wc_query и его значение равно ‘product_query’
if (isset($query->query[‘wc_query’]) && $query->query[‘wc_query’] === ‘product_query’) {
return $query; // Если условие выполняется, возвращаем запрос без изменений
}
// Проверяем, существует ли объект $WOOF и не пуст ли массив данных запроса woof
if (is_object($WOOF) && !empty(woof()->get_request_data())) {
// Дополнительная проверка для таксономии 'regions'
if (isset($query->query['tax_query']) && is_array($query->query['tax_query'])) {
foreach ($query->query['tax_query'] as $tax_query) {
if (
isset($tax_query['taxonomy'])
&& $tax_query['taxonomy'] === 'regions'
&& isset($tax_query['field'])
&& $tax_query['field'] === 'slug'
&& isset($tax_query['terms'])
&& in_array($tax_query['terms'], array(
'vseukrainskie', 'vinnitsa', 'dnipro', 'europe', 'zhytomyr',
'zakarpattya', 'ivano-frankivsk', 'kiev', 'krivoy-rog', 'kropyvnytskyi',
'crimea', 'lutsk', 'lviv', 'mariupol', 'mykolaiv', 'odesa', 'poltava',
'rivne', 'sumy', 'ternopil', 'uzhgorod', 'uman', 'kharkiv', 'kherson',
'khmelnytskyi', 'cherkasy', 'chernihiv', 'chernivtsi'
))
) {
// Выполняем необходимые действия для выбранной таксономии
// Например, можно добавить свою логику фильтрации
// woof()->custom_taxonomy_filter_logic();
break;
}
}
}
// Предсказываем идентификаторы продуктов с помощью Husky
woof()->woof_products_ids_prediction(true);
// Устанавливаем параметр post__in для запроса с идентификаторами из woof_wp_query_ids
$query->query_vars['post__in'] = $_REQUEST['woof_wp_query_ids'];
}
}
}
return $query; // Возвращаем измененный или неизмененный запрос
});