我有一个提交到wordpress网站上搜索的文本:“text123”。从本文中,我想提取一个由3位数字(123)组成的数字,并搜索具有“key”=“offer”的帖子,该key的值等于从搜索文本中提取的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 );
$查询似乎只是忽略了“meta\\u查询”,并返回包含整个搜索文本的结果(“text123”)。
当我指定这样的值时:
$query->set(\'posts_per_page\', \'4\');
它工作正常,搜索结果中只显示4篇帖子。但对于meta\\u query,它对$query没有任何影响。
有人知道怎么了吗?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
元查询应该是一个数组数组(每个数组包含一个条件)。
因此
$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-如果没有匹配项,我想您的代码就没有多大意义;)