WC_AJAX::json_search_customers() – Search for customers and return json.

You appear to be a bot. Output may be restricted

Description

Search for customers and return json.

Usage

WC_AJAX::json_search_customers();

Parameters

Returns

void

Source

File name: woocommerce/includes/class-wc-ajax.php
Lines:

1 to 59 of 59
  public static function json_search_customers() {
    ob_start();

    check_ajax_referer( 'search-customers', 'security' );

    if ( ! current_user_can( 'edit_shop_orders' ) ) {
      wp_die( -1 );
    }

    $term  = isset( $_GET['term'] ) ? (string) wc_clean( wp_unslash( $_GET['term'] ) ) : '';
    $limit = 0;

    if ( empty( $term ) ) {
      wp_die();
    }

    $ids = array();
    // Search by ID.
    if ( is_numeric( $term ) ) {
      $customer = new WC_Customer( intval( $term ) );

      // Customer does not exists.
      if ( 0 !== $customer->get_id() ) {
        $ids = array( $customer->get_id() );
      }
    }

    // Usernames can be numeric so we first check that no users was found by ID before searching for numeric username, this prevents performance issues with ID lookups.
    if ( empty( $ids ) ) {
      $data_store = WC_Data_Store::load( 'customer' );

      // If search is smaller than 3 characters, limit result set to avoid
      // too many rows being returned.
      if ( 3 > strlen( $term ) ) {
        $limit = 20;
      }
      $ids = $data_store->search_customers( $term, $limit );
    }

    $found_customers = array();

    if ( ! empty( $_GET['exclude'] ) ) {
      $ids = array_diff( $ids, array_map( 'absint', (array) wp_unslash( $_GET['exclude'] ) ) );
    }

    foreach ( $ids as $id ) {
      $customer = new WC_Customer( $id );
      /* translators: 1: user display name 2: user ID 3: user email */
      $found_customers[ $id ] = sprintf(
        /* translators: $1: customer name, $2 customer id, $3: customer email */
        esc_html__( '%1$s (#%2$s – %3$s)', 'woocommerce' ),
        $customer->get_first_name() . ' ' . $customer->get_last_name(),
        $customer->get_id(),
        $customer->get_email()
      );
    }

    wp_send_json( apply_filters( 'woocommerce_json_search_found_customers', $found_customers ) );
  }
 

 View on GitHub View on Trac