rest_api_init-Ereignis wurde nicht ausgelöst

Lesezeit: 2 Minuten

Benutzeravatar von Anton Putau
Anton Putau

Ich versuche, ein benutzerdefiniertes Plugin auf wp 4.7.4 auszuführen. Unten ist mein einfaches Plugin

add_action( 'rest_api_init', 'register_routes');


function register_routes() {
   register_rest_route( 'taxonomy-manager/v1', '/taxonomies/(P<taxonomy_type>[a-zA-Z]+)', array(
   'methods' => 'GET',
   'callback' => 'get_or_insert'
  ) );
} 

function get_or_insert( WP_REST_Request $request ) {

   $parameters = $request->get_params();

   return $parameters;

}

Wenn ich darum bitte wp-json Endpunkt sehe ich dort keine Plugin-Route. Plugin wurde erfolgreich aktiviert. Habe ich etwas verpasst? Funktioniert das obige Plugin (oder ein ähnliches basierend auf rest_api_init event) funktioniert für jemand anderen? Vielen Dank.

  • Hast du hübsche Permalinks aktiviert?

    – Ty Bailey

    31. Mai 2017 um 20:34 Uhr

  • @TyBailey, in den Einstellungen für Permalinks habe ich die Struktur „Tag und Name“.

    – Anton Putau

    1. Juni 2017 um 8:31 Uhr

  • Können Sie eine statische Seite ausprobieren und sehen, ob das funktioniert? Schließen Sie etwas aus, das mit .htaccess oder einer anderen Routing-Regel irgendwo anders in Ihrem Code passiert. Vergessen Sie nicht, dass es auch einen Vorrang gibt. Vielleicht möchten Sie den vierten Parameter als wahr hinzufügen.

    – Shawn

    1. Juni 2017 um 20:52 Uhr

Ich habe eine Lösung, Sie müssen wp-json mit Ihrer URL verwenden … wie https://yourdomain.com/wp-json/namespace/and-so-on/

Dann wird es funktionieren. Mir fehlte wp-json in der URL.

Benutzeravatar von Gnanasekaran Loganathan
Gnanasekaran Loganathan

Siehe folgende Checkliste,
1. Ändern Sie Ihren Permalink in einen hübschen Permalink und überprüfen Sie ihn.
2. Überprüfen Sie Ihre .htacess-Datei (sie sollte beschreibbar sein, wenn Sie die Permalink-Struktur speichern, die von wp wiederbeschreibbar ist).
3. Prüfen Sie Auth.
4. Überprüfen Sie unten die Methode zur benutzerdefinierten Endpunkterstellung,

add_action( 'rest_api_init', function () {
  register_rest_route( 'myplugin/v1', '/author/(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'my_awesome_func',
  ) );
} );

REF : https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/

  • Ziemlich Permalink hat den Job gemacht

    – Muhammad Arslan

    21. April 2021 um 5:27 Uhr

In meinem Fall war der Rückruf tatsächlich eine private Methode. Ich musste es in eine öffentliche Methode ändern, damit alles funktioniert:

class Example {
    function __construct() {
        add_action( 'rest_api_init', [ $this, 'example_method' ] );
    }

    public function example_method() {
        /* This will not work if the method is private! */
        /* ... */
    }
}
new Example();

Bei einer Installation verursachte die private Methode einen Fehler mit einem Stack-Trace, aber bei einer anderen Installation wurde die private Methode einfach nicht aufgerufen und es wurden keine Fehler generiert. Ich bin mir immer noch nicht sicher, warum eine Maschine so reagiert hat und nicht die andere, beide hatten es WP_DEBUG und WP_DEBUG_LOG auf wahr setzen.

Mit dem neuesten Build sehe ich nicht, dass die Aktion rest_api_init ausgelöst wird. Sieht so aus, als ob dieser Code in der plugin.php immer leer ist und zurückkehrt, ohne dass die Aktion rest_api_init ausgelöst wird:

if ( empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
    return;
}

Überprüfen Sie, ob Ihr Plugin aktiviert ist, es wird nicht ausgelöst, wenn es nicht aktiviert ist.

1402470cookie-checkrest_api_init-Ereignis wurde nicht ausgelöst

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

Privacy policy