Я пытаюсь использовать и расширить WP-API для WordPress.
Теперь я могу быть просто глупым, но я действительно не могу понять, с чего начать, хотя я перечитывал ссылку выше снова и снова. И я говорю не о коде, а о самих основах, куда мне поместить код? В плагине? Если так, что я должен включить, чтобы заставить это работать? Или достаточно расширить класс?
Извините, но я просто нахожу информацию на странице слишком маленькой … Или я полностью пропустил идеально структурированный пример сверху вниз?
Вот оно GitHub.
Спасибо за любую помощь!
Я не знаю, устарела ли документация или что-то в этом роде, но расширить 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
}
Других решений пока нет …