Wordpress Custom Endpoint rest api (метод публикации) не работает

Это моя настраиваемая конечная точка, но в ней говорится: «Не найден маршрут, соответствующий URL-адресу и методу запроса», которые я добавил в файл function.php папки темы. когда я изменил метод «POST» на «GET», он отлично работает для метода get. файл .htaccess в порядке, любой другой плагин, такой как securty или другой плагин rest api, не установлен, активирован только «плагин WP REST API»

add_action( 'rest_api_init', 'myfunction' );
function myfunction() {
register_rest_route( 'app', '/addmeta', array(
    'methods'  => 'POST',
    'callback' => 'vendor_serve_route'
) );
}

function vendor_serve_route(WP_REST_Request $request_data ) {
// Fetching values from API
$data = $request_data->get_params();`enter code here`
$user_data = array( 'user_login'     => $data['first_name'],
                    'user_email'     => $data['user_email'],
                    'nickname'       => $data['user_name'],
                    'first_name'     => $data['first_name'],
                    'last_name'      => $data['last_name'],

                    );


 return ['Data' => $user_data];


 }

person SmartBird    schedule 20.11.2018    source источник
comment
Код кажется подходящим для создания конечной точки (хотя я бы посоветовал вам создать плагин только для этого), поэтому в вашем запросе на конечную точку должна быть ошибка. Вы также меняете свой запрос на POST метод HTTP? Вы должны изменить его в конечной точке и везде, где вы делаете запрос.   -  person gd_silva    schedule 20.11.2018
comment
Спасибо. Вы правы. Проблема в HTTP.   -  person SmartBird    schedule 20.11.2018
comment
@SmartBird Я пробовал ваш пример .... но не получилось :(   -  person    schedule 27.04.2020


Ответы (1)


Уже говорилось в комментариях, но теперь с немного большим объяснением:

Код кажется подходящим для создания конечной точки, поэтому в вашем запросе на конечную точку должна быть ошибка. Проблема в том, что вы просто меняете HTTP-метод конечной точки, но не HTTP-метод фактического запроса к конечной точке.

Этот код создаст конечную точку, которая принимает POST запросы к YOUR_DOMAIN/wp-json/app/addmeta.

Добавлять много кода в functions.php файл - не лучшая практика, так как он станет очень большим и сложным в обслуживании.

Вы должны создать для этого плагин (это действительно простой процесс) и поместить туда новый код. Таким образом, он изолирован, и вы даже можете легко повторно использовать его в других приложениях.

Для создания плагина вам необходимо:

  • Создайте новый каталог в /plugins для вашего плагина
  • Создайте файл .php в этом каталоге с тем же именем, что и каталог
  • Включите комментарий заголовка в этот основной файл, который описывает ваш плагин.

Пример:

  • Каталог: .../plugins/my-api-endpoints
  • Файл: my-api-endpoints.php

А затем добавьте комментарий в файл:

<?php
/**
 * Plugin Name: My API Endpoints
 * Plugin URI: 
 * Description: This plugins handles the submissions for my API.
 * Version: 0.1
 * Author: John Doe
 * Author URI: http://johndoe
 */

your code here...

Прочтите это и this для получения дополнительной информации о создании плагинов. Это поможет вам начать работу.

person gd_silva    schedule 20.11.2018
comment
я обязательно сделаю это. Я просто проверяю, все ли в порядке. Спасибо за совет. - person SmartBird; 20.11.2018