Пользовательские конечные точки WordPress в неправильном пространстве имен - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь добавить пользовательскую конечную точку на мой WP-сервер. Предполагается, что он находится в пространстве имен myplugin/v1, а маршрут - test. Поэтому я буду запрашивать /wp-json/myplugin/v1/test.

. Я использовал следующие источники, чтобы лучше понять, как создать такую ​​конечную точку:

Вот код, который я использую.

<?php

namespace My_Plugin;

class My_Custom_Routes {
  public static function get_instance() {
    static $instance = null;

    if (is_null($instance)) {
      $instance = new self();
    }

    return $instance;
  }

  private function __construct() {
    $this->register_test_route();
  }

  public function register_test_route() {
    add_action('rest_api_init', function($server) {
      $server->register_route('myplugin/v1', '/test', array(
        'methods' => 'GET',
        'callback' => function () {
          return 'foobar';
        }
      ));
    });
  }
}

В другом файле я звоню My_Custom_Routes::get_instance(), который регистрирует маршрут.

Чтобы проверить, действительно ли зарегистрирован маршрут, я проверяю /wp-json. Я вижу, myplugin/v1 указан под пространствами имен, и теперь я проверяю, существуют ли маршруты. Но странным является то, что мой маршрут тестирования указан под пустым пространством имен (я думаю, что это пространство имен по умолчанию, но я не совсем уверен). Таким образом, мне фактически нужно было бы позвонить на /wp-json/test, чтобы позвонить на мою пользовательскую конечную точку. Я включил часть ответа от /wp-json ниже.

{
  "routes": {
    "/myplugin/v1": {
      "namespace": "myplugin/v1",
      "methods": [
        "GET"
      ],
      "endpoints": [
        {
          "methods": [
            "GET"
          ],
          "args": {
            "namespace": {
              "required": false,
              "default": "myplugin/v1"
            },
            "context": {
              "required": false,
              "default": "view"
            }
          }
        }
      ],
      "_links": {
        "self": [
          {
            "href": "https://localhost:3000/wp-json/myplugin/v1"
          }
        ]
      }
    },
    "/test": {
      "namespace": "",
      "methods": [
        "GET"
      ],
      "endpoints": [
        {
          "methods": [
            "GET"
          ],
          "args": []
        }
      ],
      "_links": {
        "self": [
          {
            "href": "https://localhost:3000/wp-json/test"
          }
        ]
      }
    },
  }
}

Есть ли что-то, что я упустил из виду в этих документах? Последние несколько часов я стучал им в голову и не могу понять, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...