REST API: Nessuna route trovata corrispondente all'URL e al metodo di richiesta
Sto avendo problemi nell'aggiungere una route REST API personalizzata a WordPress. Utilizzando il mio plugin, ho registrato la route in questo modo:
add_action( 'rest_api_init', function() {
register_rest_route( $namespace, 'handler_mijnenergie', array(
'methods' => '\WP_REST_Server::CREATABLE ',
'callback' => [ $this, 'handle_energie_data' ]
), false );
} );
Quando chiamo il namespace "/wp-json/watz/v1" ottengo una risposta corretta in Postman che mostra la route.
Tuttavia, quando provo ad accedere direttamente alla richiesta della route, ricevo un errore 404. Finora ho provato:
- Riscrivere i permalink
- Utilizzare il .htaccess standard di WordPress
- Disabilitare i plugin
- Modificare il metodo/namespace & richiesta
- Testare altre route dei plugin come Yoast o Contact Form 7 (che funzionano)
Qualcuno ha idea di cosa potrebbe causare il problema e cosa devo modificare per farlo funzionare?

È a causa di come hai definito i metodi accettati:
'methods' => '\WP_REST_Server::CREATABLE ',
Non dovresti avere le virgolette attorno. WP_REST_Server::CREATABLE
è una stringa che equivale a 'POST'
, ma mettendo le virgolette attorno stai impostando letteralmente il metodo come '\WP_REST_Server::CREATABLE'
, che non è un metodo HTTP valido. Puoi verificarlo nella risposta all'endpoint del namespace.
Impostalo così:
'methods' => WP_REST_Server::CREATABLE
Oppure, se il tuo file utilizza un namespace PHP, così:
'methods' => \WP_REST_Server::CREATABLE
O aggiungi questo all'inizio del file:
use WP_REST_Server;
Poi assicurati che quando accedi alla route direttamente, stai usando il metodo corretto. Se stai usando WP_REST_Server::CREATABLE
, allora l'endpoint risponderà solo a richieste POST
, quindi le richieste GET
restituiranno un 404, incluso quando vi accedi tramite browser.
