Я не знаю, была ли документация устаревшей или что-то еще, но довольно просто расширить WP-API. Сначала вам понадобится write a plugin.
В плагине, где вы регистрируете крючки, такие как скрипты и стили (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
}