首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WC:如何通过billing_phone或billing_email搜索客户?

WC:如何通过billing_phone或billing_email搜索客户?
EN

Stack Overflow用户
提问于 2018-08-29 19:50:22
回答 1查看 628关注 0票数 1

在“创建订单”页面上,存在搜索客户的输入。此输入按字段输入搜索客户:“user_login”、“user_url”、“user_email”、“user_nicename”、“display_name”

这是这里的信息:

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

代码语言:javascript
复制
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如下:

代码语言:javascript
复制
$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(.)中的另一列搜索客户吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-21 21:34:15

在我的例子中,我必须修改这个搜索筛选器,以便能够根据客户端标识号进行搜索。但是,只有通过修改原始文件。在这种情况下,我不得不禁用WooCommerce更新。

因此,第一个查询$query =新的WP_User_Query()是在wp_user表中查找列值。但是,第二个查询在wp_user_meta中查找列值。因此,在我的示例中,代码如下(其中billing_cedula_ruc是我为每个客户机保存的用户元之一):

代码语言:javascript
复制
$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',
                    ),
                    // K&I add search by client RUC
                    array(
                        'key'     => 'billing_cedula_ruc',
                        'value'   => $term,
                        'compare' => 'LIKE',
                    ),
                ),
            ),
            $term,
            $limit,
            'meta_query'
        )
    );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52085106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档