但是,一旦我尝试寻找其他元值,返回就会将DB中的所有成员都带来。
是否确定除名称之外的元不起作用,即返回了所有成员/用户?
因为正如我所见keywords
, country
和disciplines
梅塔,只要你compare
值是好的,则元查询将工作,并且只有具有指定元数据的成员才会返回。
例如,您的compare
对于keywords
meta是LIKE
, 所以如果你搜索foo
还有一些成员foo
(不考虑字母大小写)在keywords
meta,则只有这些成员才会出现在用户查询的结果中。
因此,请确保compare
价值是好的,尤其是对于disciplines
meta,我认为它包含多个用逗号分隔的值(例如。discipline 1, discipline 2
) 然而,你的compare
是=
这意味着一个精确的匹配搜索,通常用于具有单个值的元值。
现在,关于名字/姓氏搜索,我注意到以下问题:
缺少元查询子句key
(元键/名称)和value
(元值),WordPress忽略了元查询,因为没有指定元键。而且search
和search_columns
不是元查询中子句的有效键。
在array( \'relation\' => \'OR\', $searchName )
生产array( \'relation\' => \'OR\', array( \'search\' => ..., ..., ..., array( ... ) ) )
而不是array( \'relation\' => \'OR\', array( ... ), array( ... ) )
, 因此,即使指定了正确的元键,元查询也无法正常工作。
您应该使用$searchName[] = array(
添加first_name
数组,就像您对last_name
大堆
因此,请尝试定义$searchName
像这样:
$searchName = array(
\'relation\' => \'OR\',
);
$searchName[] = array(
\'key\' => \'first_name\', // meta key
\'value\' => $name, // meta value
\'compare\' => \'LIKE\'
);
$searchName[] = array(
\'key\' => \'last_name\', // meta key
\'value\' => $name, // meta value
\'compare\' => \'LIKE\'
);
然后进来
$args
, 添加
meta_query
像这样:
\'meta_query\' => array(
\'relation\' => \'AND\',
$searchName,
$searchKeywords,
$searchCountry,
$searchDiscipline
)