Intereting Posts
Как я могу экспортировать данные без использования какого-либо модуля импорта / экспорта Пользовательский запрос в верхней части страницы поиска архива, аргументы переопределены Что такое безопасная передовая практика для плагинов и тем WordPress? Захват изображения после загрузки и создания изображений Менеджер событий: выберите & эхо-значение meta_value для определенной таблицы meta_key из таблицы: postmeta Показывать дочерние настраиваемые типы сообщений для одного – {parent} .php? фатальная ошибка get_page_permastruct () Как я могу разрешать конфликты между моими страницами wordpress? доступ к WordPress извне frontend image post uploader Одна из причин изменения GUID WordPress Customizer: как у вас есть несколько активных обратных вызовов на одном элементе управления? Снимите ограничение высоты на wordpress 3.4.2 Могу ли я использовать настраиваемое поле в качестве URL-адреса предпочтительного изображения? Определить имя для сообщений

meta_query с массивом как значение

Я пишу PHP, который позволяет пользователям моего сайта отправлять сообщения формы и запроса по их post_meta. Все работает отлично, за исключением одного, я использовал Advanced Custom Fields для создания post_meta, а ACF сохраняет метазначения как сериализованный массив. Мне нужно сохранить данные в этом формате, чтобы ACF мог предварительно заполнить пользовательские поля в панели администратора. Мне нужен способ сравнения массива значений (пользователь выбирает через флажки в форме) в сериализованный массив в базе данных. Первая часть моего запроса выглядит следующим образом: $ удобствами является массив значений флажка:

$the_query = new WP_Query( array( 'post_type' => 'listing', 'meta_query' => array( array( 'key' => 'distance', 'value' => $distance, 'type' => 'numeric', 'compare' => '<=' ), array( 'key' => 'amenities', 'value' => $amenities[0], 'compare' => 'LIKE' ), array( 'key' => 'amenities', 'value' => $amenities[1], 'compare' => 'LIKE' ), array( 'key' => 'amenities', 'value' => $amenities[2], 'compare' => 'LIKE' ) ) ) ); 

Единственный способ, с помощью которого я могу заставить запрос работать, – это запросить каждое возможное значение ($ удобствами [#]), которое пользователь мог ввести в эти флажки, но это, похоже, слишком громоздко для моей базы данных.

Solutions Collecting From Web of "meta_query с массивом как значение"

Я нашел способ создания пользовательского запроса, который проходит через отмеченные пользователем флажки, а затем динамически добавляет массив для этого значения в запрос. Таким образом, он проверяет, выбрано ли каждое значение в сериализованном массиве, а затем переходит к следующему. Работает намного более гладко, чем то, что я делал раньше.

 for ($i=0; $i< count($amenities); $i++) { $count = count($arrays); $arrays[$count] = array( 'key' => 'amenities', 'value' => $amenities[$i], 'compare' => 'LIKE' ); } $the_query = new WP_Query(array( 'post_type' => 'listing', 'post_status' => 'publish', 'category_name' => 'private_rental', 'meta_query' => $arrays ));