route ) ) { return; } self::$registered_apis[ $api_obj->route ][ $api_slug ] = $api_obj; } public static function register_routes() { self::load_api_supporter_classes(); self::load_api_classes(); foreach ( self::$registered_apis as $route => $registered_api ) { if ( empty( $registered_api ) ) { continue; } $api_group = array_map( function ( $api ) { /** @var BWFAN_API_Base $api */ if ( empty( $api->method ) ) { return false; } $route_args = array( 'methods' => $api->method, 'callback' => array( $api, 'api_call' ), 'permission_callback' => '__return_true' ); if ( false === $api->public_api ) { $route_args['permission_callback'] = [ $api, 'rest_permission_callback' ]; } if ( is_array( $api->request_args ) && ! empty( $api->request_args ) ) { $route_args['args'] = $api->request_args; } return $route_args; }, $registered_api ); $api_group = array_filter( $api_group ); $api_group = array_values( $api_group ); register_rest_route( BWFAN_API_NAMESPACE, $route, $api_group ); } do_action( 'bwfan_api_routes_registered', self::$registered_apis ); } } if ( class_exists( 'BWFAN_API_Loader' ) ) { BWFAN_Core::register( 'bwfan_api', 'BWFAN_API_Loader' ); }