我正在物业网站上运行一个标准的WP\\U查询,我想查找所有邮政编码以“SC1”开头的物业。在元查询中,对邮政编码执行普通的LIKE操作是可行的,但它也会返回带有邮政编码SC13的属性,这不是我想要的。
因此,我将我的元查询更改为:
array(
\'key\' => \'_address_postcode\',
\'value\' => \'SC1 \', // Notice the addition of the space
\'compare\' => \'LIKE\'
)
但是。。它不起作用了。我已经深入挖掘,WordPress似乎正在调整价值观:
https://github.com/WordPress/WordPress/blob/af69f4ab1a0b44594b1f231c183f7a533575a893/wp-includes/class-wp-meta-query.php#L597
你知道我如何搜索在末尾有空格的元值吗?我想过这样做:
array(
\'key\' => \'_address_postcode\',
\'value\' => \'SC1 %\',// Add a space then wildcard
\'compare\' => \'LIKE\'
)
。。。但这行不通。有人能想出一个方法来解决这个问题吗
最合适的回答,由SO网友:birgire 整理而成
请注意您的结构,但这里有一种方法,使用RLIKE
比较和a空格character class:
array(
\'key\' => \'_address_postcode\',
\'value\' => \'^SC1[[:space:]]\', // Starts with \'SC1 \'
\'compare\' => \'RLIKE\'
)
也许你应该考虑调整meta值,正如@cybmeta所建议的那样?
但请注意,元查询可能很慢,因此这里的替代方法可能更好(例如,作为自定义分类法?)。