Не удается назначить значение мета-запроса на основе регулярного выражения для запроса wp
У меня есть текст, отправленный для поиска на сайте WordPress: "text123". Из этого текста я хотел бы извлечь число, состоящее из 3 цифр (123), и выполнить поиск сообщения, в котором есть "ключ" = "предложение", и значение этого ключа равно 3-значному числу, извлеченному из текста поиска (в данном случае "123"). Я не могу заставить его работать со следующим кодом:
preg_match('/[0-9]{3}/',get_query_var( 's' ), $matches);
$off = $matches[0];
$meta_query =
array(
'key' => 'offer',
'value' => $off,
'compare' => '='
);
$query->set( 'meta_query', $meta_query );
Запрос $, похоже, просто игнорирует "мета_запрос" и возвращает результаты, которые содержат весь искомый текст ("text123").
Когда я присваиваю такое значение:
$query->set('posts_per_page', '4');
Это работает нормально, и в результатах поиска отображаются только 4 сообщения. Но с meta_query это никак не влияет на $query, что бы это ни было.
Кто-нибудь знает, что не так?
1 answers
Мета-запрос должен представлять собой массив массивов (каждый массив содержит одно условие).
Поэтому вместо
$meta_query =
array(
'key' => 'offer',
'value' => $off,
'compare' => '='
);
$query->set( 'meta_query', $meta_query );
Должно быть
$meta_query = array(
array(
'key' => 'offer',
'value' => $off,
'compare' => '='
)
);
$query->set( 'meta_query', $meta_query );
ПС. Было бы неплохо проверить, возвращает ли preg_match
значение true - если совпадения нет, я думаю, ваш код не будет иметь особого смысла;)