从哪里开始扩展WP-API

时间:2014-11-15 18:07:05

标签: php wordpress api plugins extend

我试图使用和extend the WP-API用于Wordpress。

现在我可能只是愚蠢但我真的无法弄清楚从哪里开始,即使我已经反复阅读上面的链接。而且我不是在谈论代码,而是基础知识,我在哪里放置代码?在插件中?如果是这样,我需要包括什么才能让它工作?或者是否足以扩展课程?

很抱歉,但我发现页面上的信息太少了......或者我是否完全错过了从上到下的完美结构示例?

这是GitHub。 谢谢你的帮助!

1 个答案:

答案 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
}