@CapitanFreeloader

Как сортировать по мета полям в которых записаны сериализованные данные?

В общем пишу фильтр по мета полям. Суть вот в чем, есть несколько мета полей в которых хранятся сериализованные массивы. Например:
a:7:{i:0;s:45:"Бесплатная консультация";i:1;s:39:"Платная консультация";i:2;s:39:"Детская стоматология";i:3;s:28:"Протезирование";i:4;s:26:"Пломбирование";i:5;s:22:"Имплантация";i:6;s:16:"Хирургия";}

Я хочу сделать фильтрацию по нескольким полям с сравнением:
$args = array(
array( 
	'meta_key' => 'options', 
	'meta_value' => array(
		'Детская стоматология',
		'Рентген'
	), /*тот самый массив*/
	'compare' => 'IN' ),
array(
	'meta_key' => 'mode', 
	'meta_value' => 'Ежедневно' /* это просто строка и сама по себе работает*/
)
);
$query = new WP_Query($args);

Но такой вариант не работает. А точнее не работает первая часть. Как это можно исправить?
UPD: вариант с LIKE не подойдет, так как он только по подстроке ищет.
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
Сериализуйте каждое значение из массива, и записывайте все это дело в несколько правил. Будет как-то так.
'meta_query' => array(
	'relation' => 'AND',
	array(
			'key' => 'mode', 
			'value' => 'Ежедневно' /* это просто строка и сама по себе работает*/
	),
	array(
		'relation' => 'OR',
		array(
			'key'     => 'options',
			'value'   => serialize('Детская стоматология'),
			'compare' => 'LIKE',
		),
		array(
			'key'     => 'options',
			'value'   => serialize('Рентген'),
			'compare' => 'LIKE',
		),
	),
),
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы