我正在寻找方法,如何在管理面板->用户->搜索用户中修改搜索过滤器。 默认情况下,如果您需要通过 user_login'、'user_url'、'user_email'、'user_nicename'、'display_name' 查找用户,它可以正常工作。但我需要通过 billing_customer_number/ 找到用户 我找不到该怎么做!
已找到包含以下代码的 class-wc-customer-data-store.php 文件:
$query = new WP_User_Query(
apply_filters(
'woocommerce_customer_search_customers',
array(
'search' => '*' . esc_attr( $term ) . '*',
'search_columns' => array( 'user_login', 'user_url', 'user_email', 'user_nicename', 'display_name'),
'fields' => 'ID',
'number' => $limit,
),
$term,
$limit,
'main_query'
)
);
之后在Array中添加billing_customer_number,但不起作用。请帮忙!
接下来我尝试编辑特殊元查询:
$query2 = new WP_User_Query(
apply_filters(
'woocommerce_customer_search_customers',
array(
'fields' => 'ID',
'number' => $limit,
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $term,
'compare' => 'LIKE',
),
array(
'key' => 'last_name',
'value' => $term,
'compare' => 'LIKE',
),
// Adding custom search by number
array(
'key' => 'billing_customer_number',
'value' => $term,
'compare' => 'LIKE',
),
),
),
$term,
$limit,
'meta_query'
)
);
添加billing_customer_number,但还是不行。
我还尝试用代码片段解决问题:
add_filter ('woocommerce_customer_search_customers', 'searching_filter_for_users_by_their_account_numbers', 10, 4);
function searching_filter_for_users_by_their_account_numbers ($filter, $term, $limit, $type){
if ($type == 'meta_query'){
$filter['meta_query'][] = array('key' => 'billing_customer_number', 'value' => $term, 'compare' => 'LIKE');
}
return $filter;
}
下一个代码帮助了我:
add_action( 'pre_user_query', 'project_pre_user_search' );
function project_pre_user_search( $query ) {
global $wpdb;
global $pagenow;
if (is_admin() && 'users.php' == $pagenow) {
if( empty($_REQUEST['s']) ){return;}
$query->query_fields = 'DISTINCT '.$query->query_fields;
$query->query_from .= ' LEFT JOIN '.$wpdb->usermeta.' ON '.$wpdb->usermeta.'.user_id = '.$wpdb->users.'.ID';
$query->query_where = "WHERE 1=1 AND (user_login LIKE '%".$_REQUEST['s']."%' OR ID = '".$_REQUEST['s']."' OR (meta_value LIKE '%".$_REQUEST['s']."%' AND meta_key = 'billing_customer_number'))";
}
return $query;
}
谢谢大家。