【发布时间】:2021-06-01 00:34:04
【问题描述】:
我必须构建一个搜索表单,在其中按全名(名字 + 中间名首字母 + 姓氏)搜索公司成员。所有名字都采用这种形式:John B. Doe。
以下代码正在处理这些情况:John, John B., Doe, B., John B. Doe,但查询搜索无效:John Doe。
if (isset($_POST['search']) && $_POST['search'] != -1) {
$args['meta_query']['name_search']['key'] = "_full_name";
$args['meta_query']['name_search']['compare'] = "LIKE";
$args['meta_query']['name_search']['value'] = $_POST['search'];
}
我应该如何改进查询以便同时使用:姓名和姓氏 (John Doe) 以及姓名、姓氏和中间名首字母 (John B. Doe)?
【问题讨论】:
-
实际上,WordPress 元查询支持
REGEXP作为compare值。所以你可以使用正则表达式搜索。 -
@SallyCJ 我尝试使用 REGEXP 作为比较值,但它不起作用。
-
您尝试使用的代码是什么?您没有使用与当前问题相同的
value,是吗?我的意思是,请记住像.(“点”)这样的特殊字符需要正确转义。 -
@SallyCJ,我尝试将“LIKE”替换为“REGEXP”,并将其与代码的其他部分保持一致。
-
好吧,难怪它不起作用..您需要提供一个有效的正则表达式模式,如
John.*Doe作为value。但是,如果“成员”指的是 WordPress 用户表 (wp_users) 中的用户,那么 WordPress 实际上会为每个用户添加两个自定义字段(first_name和last_name),因此您可以只使用这些字段字段,至于中间的首字母,您可以使用另一个字段,例如middle_initial,然后您只需使用OR关系查询这些字段..
标签: php wordpress search meta-key codex