WC: Как я могу найти клиента по billing_phone или billing_email - PullRequest
0 голосов
/ 29 августа 2018

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

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

сор-содержание / плагины / WooCommerce / включает / данных-магазины / класс-туалет-клиент-данных 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 (...)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...