get_posts с meta_compare='LIKE' не работает
Я использую следующий код:
$tolettpe = "Sale";//значение по умолчанию
if($_REQUEST['tolettype']) $tolettpe = $_REQUEST['tolettype'];
else if($_REQUEST['srch_type']) $tolettpe = $_REQUEST['srch_type'];
$args = array(
'numberposts' => $latestcount,
'category' => $catidstr,
'meta_key' => 'property_type',
'meta_compare' => 'LIKE',
'meta_value' => $tolettpe.'%'
);
$post_content = get_posts($args);
Значение в базе данных - 'Sale||', и в запросе нет переменных query string.
Однако запрос не возвращает никаких результатов.
Если я использую точное значение без meta_compare, то все работает.
Есть идеи, как это исправить?

meta_compare
Возможные значения: '!=', '>', '>=', '<', или '<='
. Значение по умолчанию: '='
Если вам нужно использовать LIKE
, необходимо создать meta_query, например:
$tolettpe = "Sale"; // значение по умолчанию
if($_REQUEST['tolettype']) $tolettpe = $_REQUEST['tolettype'];
else if($_REQUEST['srch_type']) $tolettpe = $_REQUEST['srch_type'];
$args = array(
'numberposts' => $latestcount,
'category' => $catidstr,
'meta_query' => array(
array(
'key' => 'property_type',
'value' => $tolettpe,
'compare' => 'LIKE'
)
)
);
$posts = get_posts($args);
Сгенерированный запрос автоматически добавляет символы % вокруг искомого термина, поэтому нет необходимости добавлять их вручную в коде.

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

ок, нашел ответ на этот вопрос http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis
