Intereting Posts
Разметка страницы для пользовательской таксономии можете ли вы вносить изменения в тему в trac, пока она ждет обзора? Как я дезинфицирую функцию str_replace в переменных javascript Что люди используют для отображения информации об авторских правах на изображение / медиа? Загрузка изображения с предварительного просмотра – возможно ли это в WP? Несколько экземпляров короткого кода на одной странице Пользовательский запрос, проверка значений нескольких мета ключей Секция категорий пользовательской категории Woocommerce Дисплей «Сегодня» вместо даты для Pubslished Posts Преобразование вложенных текстовых текстов в ссылки Как купить на главной странице с регистрацией и оплатой? Создание пользовательских таксономий атрибутов Woocommerce из плагина Как я могу перечислить категории типа сообщения, таксономия Как перенаправить 40 000 URL-адресов с одинаковой структурой URL-адресов? JetPack Infinite Scroll не работает над настраиваемой темой

Расширенный поиск по минимальным / максимальным значениям

Я создаю расширенную форму поиска, которая позволяет мне искать по различным параметрам. В настоящее время поиск по таксономии работает нормально. Моя проблема возникает при попытке установить минимальную цену для поиска. Вот код в моем файле functions.php:

function advanced_search_query($query) { if ($query->is_search) { $query->set('post_type', array( 'properties' )); if (isset($_GET['propertyfor'])) { $query->set('taxonomy', 'propertyfor'); $query->set('terms', $_GET['propertyfor']); } if (isset($_GET['propertytype'])) { $query->set('taxonomy', 'propertytype'); $query->set('terms', $_GET['propertytype']); } if (isset($_GET['minPrice'])) { $query->set('meta_query', array( 'key' => 'shru_price', 'value' => $_GET['minPrice'], 'compare' => '>=', 'type' => 'NUMERIC' )); } }; return $query; }; add_filter('pre_get_posts', 'advanced_search_query', 1000); 

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

Кто-нибудь знает, как исправить?

Изменить: FYI, числовые значения хранятся в базе данных без каких-либо специальных символов.

UPDATE: он работает для следующего, где я устанавливаю минимальное и максимальное значение и использую BETWEEN:

  if (isset($_GET['minPrice']) && isset($_GET['maxPrice'])) { $query->set('meta_query', array( array( 'key' => 'shru_price', 'value' => array($_GET['minPrice'], $_GET['maxPrice']), 'compare' => 'BETWEEN', 'type' => 'NUMERIC' ) )); } 

но не для того, что я изначально разместил, где установлен только один, и я использую >= или <= . Я использовал elseif заявления между каждым, но все еще никаких результатов не производилось.

meta_queryмассив массивов . У вас есть только массив.

  $query->set('meta_query', array( 'key' => 'shru_price', 'value' => $_GET['minPrice'], 'compare' => '>=', 'type' => 'NUMERIC' )); 

Должен быть:

 $query->set( 'meta_query', array( array( 'key' => 'shru_price', 'value' => $_GET['minPrice'], 'compare' => '>=', 'type' => 'NUMERIC' ) ) ); 

И, пожалуйста, проверяйте / дезинформируйте данные пользователя перед его использованием!