'GET', 'callback' => array(__CLASS__, 'lessons'), 'permission_callback' => array(__CLASS__, 'can_edit'), 'args' => array( 'q' => array('type' => 'string', 'sanitize_callback' => 'sanitize_text_field', 'default' => ''), 'folder_id' => array('type' => 'integer', 'sanitize_callback' => 'absint', 'default' => 0), 'page' => array('type' => 'integer', 'sanitize_callback' => 'absint', 'default' => 1), ), )); register_rest_route('bunstream/v1', '/folders', array( 'methods' => 'GET', 'callback' => array(__CLASS__, 'folders'), 'permission_callback' => array(__CLASS__, 'can_edit'), )); } public static function lessons(WP_REST_Request $request) { $q = (string) $request->get_param('q'); $folder = (int) $request->get_param('folder_id'); $page = max(1, (int) $request->get_param('page')); $result = BunStream_Api::get('lessons', array( 'q' => function_exists('mb_substr') ? mb_substr($q, 0, 120) : substr($q, 0, 120), 'folder_id' => $folder > 0 ? $folder : null, 'page' => $page, )); return self::respond($result); } public static function folders() { return self::respond(BunStream_Api::get('folders')); } private static function respond($result) { if (is_wp_error($result)) { return new WP_Error($result->get_error_code(), $result->get_error_message(), array('status' => 502)); } return rest_ensure_response($result); } }