Die WordPress-Rest-API gibt einen Fehler zurück

Lesezeit: 2 Minuten

Benutzer-Avatar
Schmidko

Ich entwickle ein Plugin für WordPress und habe Probleme mit der Rest-API. Auf meinem Testserver funktioniert es ohne Probleme. (v4.6.6) Auf einem anderen Server (v4.4.10) gibt die API diese Fehlermeldung zurück:

{"code":"rest_invalid_handler","message":"
Der Handler f\u00fcr die Route ist ung\u00fcltig","data":{"status":500}}%

Die Meldung ist auf deutsch und bedeutet “Der Handler für die Route ist ungültig.” Verstehe nicht, warum sie die Fehlermeldungen für eine API übersetzen. Macht für mich keinen Sinn. 🙂

Die Strecken auf der http://domain/wp-json sind gleich. Vielleicht ein Problem mit den unterschiedlichen WP-Versionen?

Definition der Route:

function __construct() {
    add_action( 'rest_api_init', function(){
        register_rest_route( 'test_namespace', 'ping', array(
            'methods' => 'POST',
            'callback' => array($this, 'ping_test'),
            'permission_callback' =>  array($this, 'myhacks_permission_callback'),
        ) );
    } );
}

Danke für die Hilfe.

  • Kannst du uns den Rest der Datei zeigen? Ich glaube, das Problem kommt von $ dieser Bereich ist falsch.

    – Glen

    3. September 2017 um 13:16 Uhr


  • Ich denke, das Problem hängt mit der PHP-Version zusammen. Ich bekomme diesen Fehler auf allen Servern mit < PHP 5.4. Das ist für mich in Ordnung. Ich habe die PHP-Version aktualisiert und jetzt funktioniert es.

    – Schmidko

    5. September 2017 um 12:40 Uhr


  • $das ist in Ordnung, meine kommen aus der Nutzung 'callback' => array($this => 'ping_test') Anstatt von 'callback' => array($this, 'ping_test')

    – Glen

    6. September 2017 um 13:18 Uhr

  • Der Kommentar von @Glen hat den Trick für mich getan!

    – Jorge Irun

    12. September 2019 um 17:47 Uhr

Ich hatte das gleiche Problem. Es scheint diese Methode ping_test kann nicht privat sein. Wenn Sie es auf öffentlich ändern, verschwindet der Fehler.

  • Diese Antwort hat mir bei dem gleichen Problem geholfen. Ich habe die AjaxController-Klasse in FrontController registriert. Im AjaxController trage ich REST-Routen in seinem Konstruktor mit ein 'callback' => [$this,'portfolioSave',], args-Array-Eigenschaft von register_rest_route. Meine Methode war protected und es hat mir geholfen, als ich es geändert habe public. Danke vielmals!

    – Marecki

    15. Februar 2018 um 23:27 Uhr

Werfen Sie einen Blick auf die WordPress-Kern und Sie können sehen, dass die Methode als übergeben wurde callback auch bekannt ping_test muss anrufbar sein.

Dieser Fehler wird also nur ausgelöst, wenn diese Methode nicht existiert (zum Beispiel bin ich gerade wegen eines Tippfehlers darauf gestoßen) oder wenn sie nicht zugänglich ist (wie eine geschützte oder private Methode).

1364150cookie-checkDie WordPress-Rest-API gibt einen Fehler zurück

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

Privacy policy