2016-12-12 3 views
1

Was ist der beste Weg zu überprüfen, ob eine Anfrage eine API-Anfrage ist?Prüfen, ob die Anfrage eine WP-REST-API-Anfrage ist?

Beachten Sie, dass die Anforderung kann eine benutzerdefinierte API-Anforderung sein, das heißt, sie können wie folgt sein:

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

Offensichtlich kann ich mich, ob die wp-json API Route überprüfen, aber es sollte eine integrierte sein in Funktion, um das zu überprüfen.

Ich brauche es einige Haken zu tun, wie

add_action('init', 'do_something_only_if_api_request'); 

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

Antwort

1

Ab Dezember 2016 die REST-API-Dokumentation ist ziemlich schlecht in Bezug auf alles, was wie ein Endpunkt sieht nicht aus.

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

Wenn Sie eine Aktion nur auf einer REST-API-Aufruf hinzufügen möchten Sie dann wahrscheinlich will die Aktion Haken: rest_api_init, es 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 

} 

Sie die Details in dem PHPDoc Kommentar finden:

/** 
    * 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. 
    */