WP_Query в аргументах мета поле с массивом

282
08 сентября 2018, 20:00

Речь о произвольном типе постов. Есть переменная, содержащая некое число, например

$numb = '5';

Есть мета поле, которое содержит вот такой массив:

a:2:{s:4:"name";s:16:"Тестовый";s:2:"id";s:1:"3";}

В этом массиве интересует только ID, который в данном примере равен 3.

Необходимо построить WP_Query, в аргументах которого получить мета поле и сравнить ID из него со значением из параметра $numb. Соответственно, включать в цикл только те посты, у которых значение из параметра $numb будет равно id из массива этого мета поля.

Answer 1

Нашёл решение! Не могу сказать, насколько правильное регулярное выражение получилось, но работает.

Итак, в параметрах WP_Query при работе с мета полями используем meta_query, который содержит параметр compare (вариант сравнения). В параметре compare необходимо указать вид сравнения - REGEXP .

Соответственно, получаем такого вида аргумент для произвольного поля, содержащего массив:

'meta_query' => array(
    'relation' => 'AND ',
    array(
        'key' => 'ИМЯ ПОЛЯ',
        'value' => '(id";s:[0-9]+:")' . $ПЕРЕМЕННАЯ . '(";})$',
        'compare' => 'REGEXP'
    )
) 

Выражаю благодарность KAGG Design за подсказку по поводу REGEXP.

READ ALSO
Как запретить ходить по каталогам на сайте

Как запретить ходить по каталогам на сайте

Всех приветствую,есть сайт как запретить пользователям ходить по каталогам ну например открыл сайт попал на indexphp и допустим он ввел в адресную...

227
PHP алгоритм RSA в разных библиотеках

PHP алгоритм RSA в разных библиотеках

взял две библиотеки для шифрования в RSA: phpseclib/phpseclib liamylian/x-rsa

214
redbeanPHP чистый mysql запрос

redbeanPHP чистый mysql запрос

На моём бесплатном хостинге не работает та часть PedBean php что отвечает за внесения и изменения данных, по этому эту часть хочу перевести на mysql запросынашёл...

255