Пользовательская конечная точка маршрута для WP-REST API выдает "code": "rest_no_route", ошибка
Я следую этому руководству для создания пользовательских конечных точек для WP-API .
Я всегда получаю эту ошибку при проверке /wp-json/custom-plugin/v2/get-all-post-ids/ на почтальоне для проверки:
{
"code": "rest_no_route",
"message": "No route was found matching
the URL and request method ",
"data": {
"status": 404
}
}
Я создал файл custom-plugin.php в каталоге / plugins / custom-plugin /.
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
add_action( 'rest_api_init', 'dt_register_api_hooks' );
function dt_register_api_hooks() {
register_rest_route( 'custom-plugin/v2', '/get-all-post-ids/', array(
'methods' => 'GET',
'callback' => 'dt_get_all_post_ids',
)
);
}
// Return all post IDs
function dt_get_all_post_ids() {
if ( false === ( $all_post_ids = get_transient( 'dt_all_post_ids' ) ) ) {
$all_post_ids = get_posts( array(
'numberposts' => -1,
'post_type' => 'post',
'fields' => 'ids',
) );
// cache for 2 hours
set_transient( 'dt_all_post_ids', $all_post_ids, 60*60*2 );
}
return $all_post_ids;
}
?>
2 ответа
Убедитесь, что ваш обратный звонок
add_action( 'rest_api_init', 'dt_register_api_hooks' );
выполняется.
В моем случае мой обратный вызов не был вызван, потому что я использовал
add_action('rest_api_init', ...)
слишком поздно; действие уже было запущено. Как в, мой звонок
register_rest_route()
никогда даже не было.
Я надеюсь, что мой ответ может быть полезен для некоторых, а также.
Для очень похожей проблемы, когда я проектировал API в WordPress, я также получил то же самое."code": "rest_no_route",...
ошибка на одних сайтах и нет на других. Я проследил это до того факта, что запросы POST были преобразованы в запросы GET, поэтому они не распознавались моим плагином. Преобразование из POST в GET было сделано еще до запуска WordPress. Я смог определить проблему и решить ее, добавив следующий заголовок, как подробно описано здесь :
headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' }