Пользовательская конечная точка WordPress — rest_invalid_handler

Я совершенно новичок в PHP и WordPress, однако я начинаю писать свой первый плагин, который должен иметь возможность предоставлять пользовательскую конечную точку. Мне удалось зарегистрировать и активировать плагин и маршрут, но когда я пытаюсь получить доступ к этой конечной точке, я получаю следующую ошибку:

// http://localhost/myWp/wp-json/myCustomPlugin/v2/lastpost

{
  "code": "rest_invalid_handler",
  "message": "The handler for the route is invalid",
  "data": {
    "status": 500
  }
}

Если я получу доступ к: http://localhost/myWp/wp-json/myCustomPlugin/v2/, похоже, что моя конечная точка успешно зарегистрирована:

// 20190420173834
// http://localhost/myWp/wp-json/myCustomPlugin/v2/

{
  "namespace": "myCustomPlugin/v2",
  "routes": {
    "/myCustomPlugin/v2": {
      "namespace": "myCustomPlugin/v2",
      "methods": [
        "GET"
      ],
      "endpoints": [
        {
          "methods": [
            "GET"
          ],
          "args": {
            "namespace": {
              "required": false,
              "default": "myCustomPlugin/v2"
            },
            "context": {
              "required": false,
              "default": "view"
            }
          }
        }
      ],
      "_links": {
        "self": "http://localhost/myWp/wp-json/myCustomPlugin/v2"
      }
    },
    "/myCustomPlugin/v2/lastpost": {
      "namespace": "myCustomPlugin/v2",
      "methods": [
        "GET"
      ],
      "endpoints": [
        {
          "methods": [
            "GET"
          ],
          "args": [

          ]
        }
      ],
      "_links": {
        "self": "http://localhost/myWp/wp-json/myCustomPlugin/v2/lastpost"
      }
    }
  },
  "_links": {
    "up": [
      {
        "href": "http://localhost/myWp/wp-json/"
      }
    ]
  }
}

и, наконец, я предоставляю код моего плагина:

<?php

/**
 * @package myCustomPlugin
 *
 * /
 *
 /*
  Plugin Name: My Custom Plugin
  Plugin URI: https://mypage.net
  Description: my custom plugin
  Version: 1.0.0
  Author: My Name
  Author URI: https://mypage.net
  License: Proprierty
  Text Domain: myCustomPlugin

  */
  /*it means someone outside wp is accessing the file, in this case kill it.
  */

  if (!defined('ABSPATH'))
  {
      die ('You can not access this file!');
  }

  class MyCustomPlugin
  {

      //methods
      function activate(){
          flush_rewrite_rules();
      }

      function register(){
          add_action('rest_api_init', function () {
            register_rest_route('myCustomPlugin/v2', 'lastpost',array(
                          'methods'  => 'GET',
                          'callback' => 'get_last_post'
                ));
          });
      }

      function get_last_post($request) {
        return "it works";
      }

      function deactivate(){
           echo 'The MyCustomPlugin was deactivated';
           flush_rewrite_rules();
      }
  }

  register_activation_hook( __FILE__, array($myCustomPlugin,'activate'));
  register_activation_hook( __FILE__, array($myCustomPlugin,'deactivate'));

  $myCustomPlugin = new MyCustomPlugin();
  $myCustomPlugin->register();

Я использую: WordPress 5.1.1 в Windows 10 XAMPP для Windows 7.3.3 Apache/2.4.38 (Win64) OpenSSL/1.1.1b PHP/7.3.3 mysqlnd 5.0.12-dev — 20150407

Спасибо Всем заранее!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 331
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй это

<?php

/**
 * @package myCustomPlugin
 *
 * /
 *
  /*
  Plugin Name: My Custom Plugin
  Plugin URI: https://mypage.net
  Description: my custom plugin
  Version: 1.0.0
  Author: My Name
  Author URI: https://mypage.net
  License: Proprierty
  Text Domain: myCustomPlugin

 */
/* it means someone outside wp is accessing the file, in this case kill it.
 */

if (!defined('ABSPATH')) {
die('You can not access this file!');
}

class MyCustomPlugin {

function __construct() {
    add_action('rest_api_init', array($this, 'register'));
}

//methods
function activate() {
    flush_rewrite_rules();
}

function register() {

    register_rest_route('myCustomPlugin/v2', '/lastpost', array(
        'methods' => 'GET',
        'callback' => array($this,'get_last_post')
    ));
}

function get_last_post() {
    return new WP_REST_Response("ok", 200);
}

function deactivate() {
    echo 'The MyCustomPlugin was deactivated';
    flush_rewrite_rules();
}

}

register_activation_hook(__FILE__, array($myCustomPlugin, 'activate'));
register_activation_hook(__FILE__, array($myCustomPlugin, 'deactivate'));

$myCustomPlugin = new MyCustomPlugin();

Пожалуйста, добавьте контекст к вашему ответу.

Tobias Wilfert 21.04.2019 09:20

при регистрации конечной точки в классе вы должны писать все действия в __constructor. использовать класс WP_REST_Response для всех остальных ответов WP_REST_Response («сообщение», «статус»); сообщение: текстовое сообщение для статуса возврата: статус http для успеха: 200 см. больше в en.wikipedia.org/wiki/List_of_HTTP_status_codes

Hadi Heydarzade 21.04.2019 12:05

Другие вопросы по теме