现在我使用的是:
$args_search = array(
\'s\' => $search,
\'post_type\' => array( \'post\' )
);
$wp_query = new WP_Query( $args_search );
但问题是它显示了一切。
E、 g.如果$search
只是"2386"
我在db中发布了3条帖子:
"12386111"
"23861111"
"11112386"
我将得到3个结果。
但我想得到0个结果。因为这不是一场完整的比赛。
仅当搜索是23861111
然后我需要得到1的结果23861111。
或者什么时候11112386
我需要键入完整的11112386
作为$search变量,而不仅仅是2386或238来获得结果11112386
如何更改查询以获得所需的结果,而不是所有包含搜索字符串的内容?
最合适的回答,由SO网友:gmazzap 整理而成
$args_search = array(
\'s\' => $search,
\'exact\' => 1,
\'post_type\' => array( \'post\' )
);
Codex中没有“精确”参数的文档,但最好(当然最可靠)的文档是代码本身。请参见
line 2200 of query.php限制:如果搜索参数上有空格,它将不起作用,因为WP_Query
将带有空格的搜索词视为不同的搜索词。
因此,您可以使用:
$args_search = array(
\'s\' => $search,
\'post_type\' => array( \'post\' )
);
// if no spaces in search we put exact argument
if ( count(explode(\' \', $search)) == 1 ) $args_search[\'exact\'] = 1;
代码上的注释。正当
\'post_type\' => array( \'post\' )
不是您发布的“posts”(复数)。