meta_query()中LIKE参数看似失效的原因排查与解决
WordPress meta_query 中 'LIKE' 看似失效的真相
嘿,这个坑我见好多开发者踩过!你一开始觉得LIKE参数失效了,其实压根不是这么回事——问题出在默认排序规则上,不是查询逻辑本身。
先看你的代码片段:
$ref_query = array( 'meta_key' => 'reference_code', 'value' => array($ref), 'compare' => 'LIKE' ); $query->set( 'meta_query', $meta_query);
当你把compare设为=时,结果完全符合预期,但换成LIKE后好像没拿到想要的内容,而其他元查询的运算符(比如>=、<=)都正常工作,这很容易让人误以为是LIKE出了问题。
但实际上,LIKE参数完全有效!只是WordPress的查询默认是按文章ID升序排列的,当LIKE匹配出更多结果时,你预期的内容可能被挤到了列表后面,导致你误以为查询没生效。
给你个快速验证的小技巧:临时修改排序规则,让结果按你查询的reference_code字段排序,这样就能一眼看到所有匹配LIKE条件的内容:
// 临时设置按meta字段排序,验证LIKE结果 $query->set('orderby', 'meta_value'); $query->set('meta_key', 'reference_code'); $query->set('order', 'ASC');
这么一改,你就能确认LIKE其实一直在正常工作,只是排序让你产生了误解而已。
内容的提问来源于stack exchange,提问作者Alex Knopp
相关产品推荐
相关产品推荐

