无法通过电子邮件搜索 WordPress



我创建了一个自动完成的搜索表单。现在我按名字和姓氏进行搜索。但不是通过邮件。怎么了?

$args = array (
'order'      => 'ASC',
'orderby'    => 'display_name',
'search'     => '*' . esc_attr( $search_term ) . '*',
'meta_query' => array(
'relation' => 'OR',
array(
'key'     => 'first_name',
'value'   => $search_term,
'compare' => 'LIKE'
),
array(
'key'     => 'last_name',
'value'   => $search_term,
'compare' => 'LIKE'
),
array(
'key'     => 'user_email',
'value'   => $search_term,
'compare' => 'LIKE'
)
)
);
// Create the WP_User_Query object
$wp_user_query = new WP_User_Query( $args );

用户电子邮件不是meta,因此不能使用meta_query。可以使用分离的数组键search_columns。如果您想要结果,其中$search_term只包含first_name、last_name或user_email的一个选项,那么当我合并两个查询(通过user_email搜索的查询和您最初调整的查询(时,我找到了一种实用的方法。这对我有效:

$args1 = array (
'order'      => 'ASC',
'orderby'    => 'display_name',
'search'     => '*' . esc_attr( $search_term ) . '*',
'search_columns' => array( 'user_email' )
);
$args2 = array (
'order'      => 'ASC',
'orderby'    => 'display_name',
'meta_query' => array(
'relation' => 'OR',
array(
'key'     => 'first_name',
'value'   => $search_term,
'compare' => 'LIKE'
),
array(
'key'     => 'last_name',
'value'   => $search_term,
'compare' => 'LIKE'
)
)
);
$query1 = new WP_User_Query( $args1 );
$query2 = new WP_User_Query( $args2 );
$wp_user_query = new WP_User_Query();
$wp_user_query->results = array_merge( $query1->results,$query2->results );

尝试这种方法

$args = array(
'order'      => 'ASC',
'orderby'    => 'display_name',
'search'         => '*' . esc_attr( $search_term ) . '*',
'search_columns' => array( 'first_name', 'last_name', 'user_email' )
);
$user_query = new WP_User_Query( $args );

有关WP_User_Query类的详细信息,请单击此处https://codex.wordpress.org/Class_Reference/WP_User_Query

编辑:

可用搜索字段

'ID' - Search by user id.
'user_login' - Search by user login.
'user_nicename' - Search by user nicename.
'user_email' - Search by user email.
'user_url' - Search by user url.

最新更新