[a-z0-9_-]+)', array( 'methods' => WP_REST_Server::READABLE, 'callback' => 'listo_rest', ) ); } function listo_rest( WP_REST_Request $request ) { $type = $request->get_param( 'type' ); $type = str_replace( '-', '_', trim( $type ) ); $group = $request->get_param( 'group' ); $group = str_replace( '-', '_', trim( $group ) ); $locale = $request->get_param( 'locale' ); $locale = str_replace( '-', '_', trim( $locale ) ); $args = array( 'group' => $group, 'locale' => $locale, ); $items = listo( $type, $args ); if ( ! $items ) { return new WP_Error( 'listo_not_found', __( "The requested list was not found.", 'listo' ), array( 'status' => 404 ) ); } return rest_ensure_response( $items ); }