Kann ich Init-Hook für API-Zwecke verwenden?

Mein Fragetitel könnte etwas verwirrend sein. Hier ist das Szenario, zum Beispiel: Ich gebe einen API-Service von meiner WordPress-Website.

Mit ihr können andere wenige Informationen kennen. Wenn Sie beispielsweise eine Benutzer-ID in der Abfrage-URL senden, sende ich ihnen die Benutzer-Telefonnummer.

Zum Beispiel: Wenn sie mit www.example.com/?cuid=23 auf die Site zugreifen

Jetzt überprüfe ich, ob in $_GET Variable vorhanden ist, wenn es vorhanden ist, dann bekomme ich die Telefonnummer und die function mit der Telefonnummer. Da init Hook der früheste Hook ist, benutze ich ihn.

 function tell_phone_num(){ if(isset($_GET['cuid'])){ //some one wants the service //I'll get the phone number and show it -> $user_phone //setting response format, like json etc die($user_phone); } } add_action('init','tell_phone_num'); 

Das funktioniert gut. Wenn auf site mit cuid zugegriffen wird, cuid nur diese function.

Dies ist nur ein Beispiel, aber Telefonnummer ist nicht meine wahre Information. Ich brauche keine Authentifizierung, weil die Informationen, die ich gebe, nicht empfindlich sind.

Hier ist meine Frage. Ist das der richtige Weg, oder sollte ich eine andere Best-Practice-Methode machen?

Solutions Collecting From Web of "Kann ich Init-Hook für API-Zwecke verwenden?"

Wenn Sie eine benutzerfreundlichere URL-Struktur wünschen, können Sie einen Rewrite-Endpunkt hinzufügen .

Dadurch werden die Regeln für und die Abfanganforderungen an /my-api/ :

 function wpd_add_api_endpoint() { add_rewrite_endpoint( 'my-api', EP_ROOT ); } add_action( 'init', 'wpd_add_api_endpoint' ); function wpd_api_request( $request ){ if( isset( $request->query_vars['my-api'] ) ){ // $request->query_vars['my-api'] is a string containing everything after your url slug // convert it to array $parts = explode( '/', $request->query_vars['my-api'] ); echo '
'; print_r( $parts ); echo '

'; die; } } add_action( 'parse_request', 'wpd_api_request' );

Nachdem Sie die Regeln gelöscht haben, versuchen Sie eine Anfrage wie:

http://example.com/my-api/something/else/123/4,5,6/77

Welches wird ausgeben:

 Array ( [0] => something [1] => else [2] => 123 [3] => 4,5,6 [4] => &7 ) 

Ja, init ist gut für diesen Zweck. Im Codex steht geschrieben:

init ist nützlich zum Abfangen von $ _GET oder $ _POST Triggern.