Prüfen Sie, ob die Anfrage eine WP-REST-API-Anfrage ist?

Lesezeit: 2 Minuten

Wie lässt sich am besten prüfen, ob es sich bei einer Anfrage um eine API-Anfrage handelt?

Beachten Sie, dass die Anfrage eine benutzerdefinierte API-Anfrage sein kann, was bedeutet, dass sie wie folgt aussehen kann:

mysite.com/wp-json/my_namespace/my_version/my_action

Natürlich kann ich überprüfen, ob die API wp-json routet, aber es sollte eine eingebaute Funktion geben, um das zu überprüfen.

Ich brauche es, um einige Hooks zu machen, wie z

add_action('init', 'do_something_only_if_api_request');

function do_something_only_if_api_request()
{
   if ( ! wp_api_request() ) {
     return;
   }
   // do stuff
}

Du kannst nachschauen defined('REST_REQUEST'). Diese Konstante ist definiert als true in rest_api_loaded() (und nicht anders definiert).

Da war ein Diskussion von WP Rest API-Entwicklern über die Einführung einer neuen Funktion wie is_rest_request(). Am Ende haben sie sich für diese Konstante entschieden.

Ab Dezember 2016 ist die REST-API-Dokumentation in Bezug auf alles, was nicht wie ein Endpunkt aussieht, ziemlich dürftig.

Es gibt jedoch einige Funktionen, und Sie können die Dokumentation direkt in der Datei finden, da sie sehr gut dokumentiert sind, siehe: wordpress/wp-includes/rest-api.php

Wenn Sie eine Aktion nur bei einem REST-API-Aufruf hinzufügen möchten, möchten Sie wahrscheinlich die Aktion verknüpfen: rest_api_inites würde so aussehen:

add_action('rest_api_init', 'do_something_only_if_api_request');

function do_something_only_if_api_request($wp_rest_server)
{

   // do stuff

}

Die Details finden Sie im PHPdoc-Kommentar:

    /**
     * Fires when preparing to serve an API request.
     *
     * Endpoint objects should be created and register their hooks on this action rather
     * than another action to ensure they're only loaded when needed.
     *
     * @since 4.4.0
     *
     * @param WP_REST_Server $wp_rest_server Server object.
     */

In meinem Fall führt das Plugin wp_redirect für Benutzer zur Anmeldeseite durch.

Ich möchte dies vermeiden, falls die Rest-API aufgerufen wird.

Also benutze ich

if (! strpos( $_SERVER['REQUEST_URI'], 'wp-json')) // It's not a rest-api call

1394070cookie-checkPrüfen Sie, ob die Anfrage eine WP-REST-API-Anfrage ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy