С чего начать с расширения WP-API

Я пытаюсь использовать и расширить WP-API для WordPress.

Теперь я могу быть просто глупым, но я действительно не могу понять, с чего начать, хотя я перечитывал ссылку выше снова и снова. И я говорю не о коде, а о самих основах, куда мне поместить код? В плагине? Если так, что я должен включить, чтобы заставить это работать? Или достаточно расширить класс?

Извините, но я просто нахожу информацию на странице слишком маленькой … Или я полностью пропустил идеально структурированный пример сверху вниз?

Вот оно GitHub.
Спасибо за любую помощь!

1

Решение

Я не знаю, устарела ли документация или что-то в этом роде, но расширить WP-API довольно просто. Вам нужно будет написать плагин первый.

В плагине, где вы регистрируете хуки, такие как скрипты и стили (functions.php, bootstrap.php), вы добавляете новый хук для регистрации маршрутов.

add_filter( 'json_endpoints', array( $this, 'registerRoutes' ) );

public function registerRoutes($routes){
$editorService = $this->container["editorService"];

$routes['/newsletters'] = array(
array( array( $editorService, 'create'), \WP_JSON_Server::CREATABLE | \WP_JSON_Server::ACCEPT_JSON ),
);
$routes['/newsletters/(?P<id>\d+)'] = array(
array( array( $editorService, 'get'), \WP_JSON_Server::READABLE )
);
return $routes;
}

Если вы прочитаете документацию, вы увидите, что Новостная рассылка это сущность. В этом примере я внедряю сервис и вызываю его в маршрутах. Очень вероятно, что вы используете другой подход, и если у вас возникнут трудности в этом вопросе, вам придется выяснить, как структурировать плагин, какие шаблоны применять, писать или нет свою собственную инфраструктуру и т. Д.

Если это так, проверьте этот скелет, это отличный подход к MVC https://github.com/iandunn/WordPress-Plugin-Skeleton

Если вы хотите вызвать функцию внутри того же класса, вы должны сделать:

public function registerRoutes(){
$routes['/newsletters'] = array(
array( array( $this, 'createNewsletter'), \WP_JSON_Server::CREATABLE | \WP_JSON_Server::ACCEPT_JSON )
);
}
public function createNewsletter() {
$wpdb->prepare(); // etc etc
}
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]