/** * Get customer details via ajax. */ public static function get_customer_details() { check_ajax_referer('get-customer-details', 'security'); if (!current_user_can('edit_shop_orders')) { die(-1); } $user_id = absint($_POST['user_id']); $customer = new WC_Customer($user_id); $customer_data = apply_filters('woocommerce_found_customer_details', $customer->get_data(), $user_id); wp_send_json($customer_data); }
/** * Prepare a single customer output for response. * * @param WP_User $user_data User object. * @param WP_REST_Request $request Request object. * @return WP_REST_Response $response Response data. */ public function prepare_item_for_response($user_data, $request) { $customer = new WC_Customer($user_data->ID); $data = $customer->get_data(); $format_date = array('date_created', 'date_modified'); // Format date values. foreach ($format_date as $key) { $data[$key] = $data[$key] ? wc_rest_prepare_date_response(get_gmt_from_date(date('Y-m-d H:i:s', $data[$key]))) : null; } // Remove unwanted CRUD data. unset($data['role']); // Additional non-crud data. $data['last_order'] = null; $data['orders_count'] = $customer->get_order_count(); $data['total_spent'] = $customer->get_total_spent(); $data['avatar_url'] = $customer->get_avatar_url(); if ($last_order_data = $customer->get_last_order()) { $data['last_order'] = array('id' => $last_order_data->get_id(), 'date' => $last_order_data->get_date_created() ? wc_rest_prepare_date_response($last_order_data->get_date_created()) : null); } $context = !empty($request['context']) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object($data, $request); $data = $this->filter_response_by_context($data, $context); $response = rest_ensure_response($data); $response->add_links($this->prepare_links($user_data)); /** * Filter customer data returned from the REST API. * * @param WP_REST_Response $response The response object. * @param WP_User $user_data User object used to create response. * @param WP_REST_Request $request Request object. */ return apply_filters('woocommerce_rest_prepare_customer', $response, $user_data, $request); }