如何在WP_QUERY中找到精确匹配的搜索词?在WP_QUERY中的LIKE QUERY中添加了什么额外的字符串?

时间:2021-05-19 作者:Jenno Richi Benat

使用参数搜索时s 它在每个Like查询前后添加附加值

SELECT wp_7_posts.ID FROM wp_7_posts WHERE 1=1 AND (((wp_7_posts.post_title LIKE \'{d146fc7cb41ff444163abadd50ac5da7ec5439fd51386c3cfe2cea107126703b}acetic{d146fc7cb41ff444163abadd50ac5da7ec5439fd51386c3cfe2cea107126703b}\')

是否有任何方法可以搜索准确的术语,而不是使用WP\\U查询逐字搜索?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

它在每个Like查询前后添加附加值

那个{d146fc7cb41ff444163abadd50ac5da7ec5439fd51386c3cfe2cea107126703b} 是一个placeholder escape string 对于文字% 准备好的报表中使用的(百分比)符号(参见wpdb::prepare()) 而转义字符串是由wpdb::placeholder_escape().

所以实际上{d146fc7cb41ff444163abadd50ac5da7ec5439fd51386c3cfe2cea107126703b}% 签名,但以转义形式,并将其更改回% 当WordPress将查询发送到MySQL时。

因此,不要担心这个值;这是完全正确的,而且是有充分理由的。

是否有搜索确切术语的方法

是的,有:使用exact 参数并将其设置为1true. 例如。

在浏览器中,导航到https://example.com/?s=acetic&exact=1.

或在模板/PHP中运行new WP_Query( \'s=acetic&exact=1\' ).

。。。上述两种情况都会导致WordPress搜索帖子,比如帖子标题acetic 而不是acetic acid. 一、 e.TheLIKE 子句不会使用% 登录为inpost_title LIKE \'acetic\' 而不是post_title LIKE \'%acetic%\'.

此外,如果要在搜索关键字中保留空格,请使用双引号将其括起来,即。"<keyword>". 例如,如果你有两篇标题为My foo bar baz postMy foo BAZ before bar post 分别,然后搜索"foo bar" 将只匹配第一篇包含foo 后跟空格和bar, i、 e。foo bar. 但如果你搜索foo bar (没有引号),那么这将匹配这两篇文章,因为标题包含foo 还有bar.

此外,上述"<keyword>" 格式等效于设置sentence 参数到1true 如中所示s=my foo&sentence=1. 但使用上述格式,您可以进一步限制搜索结果,例如:。my foo&sentence=1 将匹配上述两个帖子,但是"my foo", before 仅与第二篇文章匹配,因为它包含before 除此之外my foo.

然而,应该注意的是sentence 以及"<keyword>" 格式将使用% 登录LIKE 子句,所以如果没有% 签名,使用exact 论点

相关推荐

筛选wp_Query以在函数中搜索帖子标题

我正在根据表单中的用户条目进行查询,以从我的帖子查询中提取帖子。我希望表单保持简单,所以我希望只需要使用一个字段。该字段将显示搜索零件号或产品标题。这将是一个Ajax响应。下面是我现在掌握的代码:function led_search_function(){ $args = array( \'post_type\' => \'al_product\', \'post_status\' => \