我试图使用和extend the WP-API用于Wordpress。
现在我可能只是愚蠢但我真的无法弄清楚从哪里开始,即使我已经反复阅读上面的链接。而且我不是在谈论代码,而是基础知识,我在哪里放置代码?在插件中?如果是这样,我需要包括什么才能让它工作?或者是否足以扩展课程?
很抱歉,但我发现页面上的信息太少了......或者我是否完全错过了从上到下的完美结构示例?
这是GitHub。 谢谢你的帮助!
答案 0 :(得分:4)
我不知道文档是否过时或类似,但扩展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
}