根据regexp将META_QUERY值赋给wp_Query失败

时间:2019-01-06 作者:Mateusz Kozłowski

我有一个提交到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没有任何影响。

有人知道怎么了吗?

1 个回复
最合适的回答,由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-如果没有匹配项,我想您的代码就没有多大意义;)

相关推荐

Search results for ACF data

是否可以编写查询以仅从一个自定义字段中搜索数据?我有一个名为“讲座”的CPT,我只想搜索名为“关键字”的自定义字段中的数据,我有:<?php $args = array( \'post_type\' => \'lectures\', \'order\' => \'ASC\', \'posts_per_page\' => -1, \'