Passen Sie den benutzerdefinierten API-Endpunkt mit Leerzeichen an

Ich versuche, einen Endpunkt mit den folgenden hinzuzufügen:

register_rest_route('namespace/v1','custom-search/(?P[a-zA-Z\s]+)', array( 'methods' => 'GET', 'callback' => 'gm_custom_search_callback' ) ); 

Es registriert die Route, erkennt aber nicht, wenn ich ein Leerzeichen zB% 20 anfüge oder eine Zeichenfolge mit einem “” in übergebe, kann ich nirgends sehen, was darauf hindeutet, wie dies erreicht werden soll, fehlt mir etwas?

Solutions Collecting From Web of "Passen Sie den benutzerdefinierten API-Endpunkt mit Leerzeichen an"

Sie können das folgendermaßen tun:

 function get_custom_search_callback($request) { //$parameters = $request->get_params(); $response = urldecode($request->get_param('search')); return rest_ensure_response($response); } add_action('rest_api_init', 'add_custom_users_api'); function add_custom_users_api(){ register_rest_route('namespace/v1', 'custom-search/(?P([a-zA-Z]|%20)+)', array( 'methods' => 'GET', 'callback' => 'get_custom_search_callback' ) ); } 

Beachten Sie zwei Dinge:

  • Sie müssen %20 zum übereinstimmenden Zeichensatz hinzufügen
  • Sie müssen den Wert der urldecode() , um die %20 und möglicherweise andere urlencodierte Zeichen loszuwerden (wenn Sie sie in die Regex schreiben)