Домой WordPress WordPress: Вопросы и ответы Как сравнить несколько значений произвольного поля
3ответ(ов) в теме
gora0870
не в сети 4 года
На сайте с 31.07.2014
Участник
Тем 86
Сообщения 383
1
18:33

Добрый вечер!
Помогите разобраться в том как правильно сравнить несколько значений произвольного поля со значениями массива.
имеется:

$rabota = get_post_meta( $post_ID, 'rabota', true);

'meta_query' => array(
                    array('relation' => 'OR',	
			array( 'key' => 'rabota_61', 'value' => $rabota))), 

Необходимо чтобы значение поля 'rabota_61' сравнивались со значениями массива $rabota и осуществляло поиск хотя бы по одному из значений.
Если поле 'rabota_61' обычный выпадающий список, а 'rabota' множественный выбор, сравнение и поиск происходит корректно, но если оба поля являются множественным выбором, сравнение и поиск не корректны.
Спасибо!

0
Андрей CS
не в сети 12 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16928
2
21:05

ваш код должен быть рабочим, тк документация по функции query_post позволяет указывать в значении 'value' массив и производить по нему поиск, т.е. если пост имеет в значении поля rabota_61 одно из значений указанного массива, то поиск производится корректно, но это в случае, если rabota_61 имеет одиночное значение. Другое дело, если в значении поля rabota_61 храниться массив, значит в БД он храниться в сериализованном виде и производить поиск по нему корректно уже не получится. По сериализованному массиву более менее можно производить поиск только выискивая одно значение и только, если compare указан как LIKE

1
gora0870
не в сети 4 года
На сайте с 31.07.2014
Участник
Тем 86
Сообщения 383
3
21:57

Андрей CS сказал(а)

ваш код должен быть рабочим, тк документация по функции query_post позволяет указывать в значении 'value' массив и производить по нему поиск, т.е. если пост имеет в значении поля rabota_61 одно из значений указанного массива, то поиск производится корректно, но это в случае, если rabota_61 имеет одиночное значение. Другое дело, если в значении поля rabota_61 храниться массив, значит в БД он храниться в сериализованном виде и производить поиск по нему корректно уже не получится. По сериализованному массиву более менее можно производить поиск только выискивая одно значение и только, если compare указан как LIKE

Спасибо за разъяснение. Да, как вы и говорите, с одиночным значением поля rabota_61 все работает корректно. Теперь понятно почему мои потуги были тщетными.

0
Тема закрыта. Публикация новых сообщений запрещена.