WC: Как мне найти клиента по billing_phone или billing_email?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 WC: Как мне найти клиента по billing_phone или billing_email?

Сообщение Anonymous »

На странице создания заказа есть ввод для поиска клиента.
Этот ввод ищет клиента по полям: «user_login», «user_url», «user_email», «user_nicename», «display_name»

Эта информация присутствует здесь:


wp-content/plugins/woocommerce/includes/data-stores/ class-wc-customer-data-store.php

Код: Выделить всё

public function search_customers( $term, $limit = '' ) {
$results = apply_filters( 'woocommerce_customer_pre_search_customers', false, $term, $limit );
if ( is_array( $results ) ) {
return $results;
}
error_log('search_customers NEXT STEP!!!');

$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'
)
);

$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',
),
),
), $term, $limit, 'meta_query'
)
);
error_log('search_customers - WHAT IS IT?');

$results = wp_parse_id_list( array_merge( (array) $query->get_results(), (array) $query2->get_results() ) );

if ( $limit && count( $results ) > $limit ) {
$results = array_slice( $results, 0, $limit );
}

return $results;
}
Мой вопрос: как добавить свой собственный столбец в search_columns? Мне нужно добавить туда столбец billing_phone.
В ходе эксперимента я изменил в функции search_customers(...) $query такой:

Код: Выделить всё

$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', 'billing_phone' ),
'fields'         => 'ID',
'number'         => $limit,
), $term, $limit, 'main_query'
)
);
Это не очень хороший способ, но я не знаю, как сделать иначе.

Но любой почему это «исправление» не работает.

Как добавить свой собственный столбец для поиска клиентов? Могу ли я выполнить поиск клиента по другому столбцу, который затем присутствует в search_customers(...)?

Подробнее здесь: https://stackoverflow.com/questions/520 ... ling-email
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»