元查询搜索具有中间首字母的名称(_Q)

时间:2021-06-01 作者:ari

我必须建立一个搜索表单,在这里我按公司成员的全名(名字+中间首字母+姓氏)搜索他们。所有名称均采用以下形式: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)?

1 个回复
SO网友:Krzysiek Dróżdż

在这种情况下,最简单的方法是设置用于搜索的其他自定义字段。

因此,如果名称看起来是活的:

<first_name> <initial> <last_name>
然后可以创建另一个字段,该字段将包含:

<first_name> <initial> <last_name>#<first_name> <last_name>#<last_name> <first_name>
(#字符是分隔符,因此您应该使用任何不会出现在分隔字段中的字符)

然后可以使用此字段进行搜索。你不仅可以搜索约翰·多伊,还可以搜索多伊·约翰。

您所要做的就是:

保存帖子时(例如使用save\\u post hook),请确保更新了用于搜索的特殊字段