您不能使用LIKE
具有numeric
(至少我很确定你不能)。numeric
将尝试转换整个value
到一个数字。这将失败,因为它不是一个数字。这是第一个错误。
其次,要获得文字%
, 你需要加倍%%
. 注:我不记得了meta_query
严格来说。我是根据%
通过$wpdb->prepare
但我认为是一样的。Edit: 这似乎只适用于$wpdb->prepare
. 代码已编辑。
我还没有测试这个,因为我需要在数据库中设置一些东西,现在没有时间,但我认为它会起作用。
$practiceArgs = array(
\'post_type\' => \'attorney\',
\'post_status\' => \'publish\',
\'posts_per_page\' => -1,
\'meta_query\' => array(
array(
\'key\' => \'practice_area\',
\'value\' => $post->ID,
\'compare\' => \'LIKE\'
)
)
);
我希望这就是你需要的推动力。如果不起作用,我会重新访问。
Edit: 我将您的(损坏的)序列化数组插入到我的数据库中,并运行上面的代码。如果我正确设置了所有内容(meta\\u字段、帖子类型等),那么上面的代码就可以正常工作。如果这对你不起作用,你就有别的事情要做——也许你认为应该在没有比赛的地方举行比赛。
我假设你的每个“律师”职位都会有这样的数组。如果你这样做了,那应该行得通。我可能倾向于多重practice_area
行,而不是使用序列化数组。=
是比LIKE
, 尤其是当您使用通配符时,您的结果应该更准确。索引(MySQL数据库)也应该工作得更好。