[a-zA-Z0-9-]+)', array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( __CLASS__, 'get_report' ), 'permission_callback' => array( __CLASS__, 'get_items_permissions_check' ), 'args' => array( 'period' => array( 'required' => false, 'default' => 'last_30_days', 'sanitize_callback' => 'sanitize_title', ), 'start_date' => array( 'required' => false, 'sanitize_callback' => 'sanitize_text_field', ), 'end_date' => array( 'required' => false, 'sanitize_callback' => 'sanitize_text_field', ), ), ) ); } public static function get_items_permissions_check( $request ) { return current_user_can( 'manage_woocommerce' ); } public static function get_report( $request ) { $type = $request->get_param( 'type' ); $period = $request->get_param( 'period' ); $start_date = $request->get_param( 'start_date' ); $end_date = $request->get_param( 'end_date' ); $data = array(); switch ( $type ) { case 'overview': $data = ANFOWO_Product_Query::get_overview( $period, $start_date, $end_date ); break; case 'product': $data = ANFOWO_Product_Query::get_report( $period, $start_date, $end_date ); break; case 'category': $data = ANFOWO_Category_Query::get_report( $period, $start_date, $end_date ); break; case 'taxonomy': $data = ANFOWO_Taxonomy_Query::get_report( $period, $start_date, $end_date ); break; case 'tax': $data = ANFOWO_Tax_Query::get_report( $period, $start_date, $end_date ); break; case 'customer': $data = ANFOWO_Customer_Query::get_report( $period, $start_date, $end_date ); break; default: return new WP_Error( 'invalid_report', 'Invalid report type', array( 'status' => 400 ) ); } return rest_ensure_response( array( 'success' => true, 'data' => $data, ) ); } }