我有大量用户,我在前端显示WP_User_Query
。
我在这个前端用户数据库上有一个搜索功能,需要能够按自定义字段进行搜索,每个配置文件都有多个。
目前,搜索引擎会搜索标准的wp用户字段,例如' user_firstname',' user_lastname',但不会搜索我的自定义字段('机构& #39;&'设备'在这个例子中),我不知道为什么。
查询:
$search = ( isset($_GET['search-meta']) ) ? sanitize_text_field($_GET['search-meta']) : false ;
if ($search){
$my_users = new WP_User_Query(
array(
'role' => 'Subscriber',
'search' => '*' . $search . '*',
'fields' => 'all',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'institution',
'value' => '*' . $search . '*',
'compare' => 'LIKE'
),
array(
'key' => 'equipment',
'value' => '*' . $search . '*',
'compare' => 'LIKE'
)
)
));
}
搜索表单:
<form method="get" id="db-search" action="<?php the_permalink() ?>">
<input type="text" class="field" name="search-meta" id="s" placeholder="Search Database" />
<button type="submit"><i class="fa fa-search"></i></button>
</form>
答案 0 :(得分:2)
您的代码中有两个错误。
*
meta_query
删除所有value
。
您正在尝试使用search
:
'role' => 'Subscriber',
'search' => '*' . $search . '*',
但问题是,search
密钥始终会尝试从$search
表格的email address, URL, ID, username or display_name中找到关系wp_users
的{{1}}。这意味着,如果您的AND
与上述某个列不匹配,那么您的查询将不返回任何内容。
以下是从$search
用户搜索的工作代码:
meta_values