根据@ialocin的评论,我从WP-JSON-API切换到WP-REST-API。rest api的文档要少得多,但可以使用本机wordpress函数进行自定义。而且,它有a nifty github plugin for allowing use with ACF custom fiends.
无论如何,定制wp rest api的文档非常糟糕,因此我将向您展示我在wp 4.2.0+wp rest api 1.2.1中所做的工作
第一件事是向插件中添加一个操作,以便它能够接收您的新rest操作。在wp内容/插件/[rest api文件夹]/插件中执行此操作。php。我个人在文件的底部添加了所有这些内容。
require_once( dirname( __FILE__ ) . \'/lib/class-myplugin-api-mytype.php\' );
function myplugin_api_init() {
global $myplugin_api_mytype;
$myplugin_api_mytype = new MyPlugin_API_MyType();
add_filter( \'json_endpoints\', array( $myplugin_api_mytype, \'register_routes\' ) );
}
add_action( \'wp_json_server_before_serve\', \'myplugin_api_init\' );
现在是时候添加你的新类了,这就是肉所在的地方。创建文件wp-content/plugins/[RESTAPI文件夹]/lib/class-myplugin-api-mytype。php并将其放入其中:
<?php
class MyPlugin_API_MyType {
public function register_routes( $routes ) {
$routes[\'/test\'] = array(
array( array( $this, \'test\'), WP_JSON_Server::READABLE ),
);
// $routes[\'/myplugin/mytypeitems\'] = array(
// array( array( $this, \'get_posts\'), WP_JSON_Server::READABLE ),
// array( array( $this, \'new_post\'), WP_JSON_Server::CREATABLE | WP_JSON_Server::ACCEPT_JSON ),
// );
// $routes[\'/myplugin/mytypeitems/(?P<id>\\d+)\'] = array(
// array( array( $this, \'get_post\'), WP_JSON_Server::READABLE ),
// array( array( $this, \'edit_post\'), WP_JSON_Server::EDITABLE | WP_JSON_Server::ACCEPT_JSON ),
// array( array( $this, \'delete_post\'), WP_JSON_Server::DELETABLE ),
// );
// Add more custom routes here
return $routes;
}
public function test( $filter = array(), $context = \'view\', $type = \'post\', $page = 1 ) {
return array("status" => "ok", "message" => "it worked!");
}
}
?>
现在转到url末尾带有“/wp-json/test”的worpress页面(无查询字符串),您应该会看到
{"status":"ok","message":"it worked!"}
维奥拉!您还可以查看/libs/class wp-json帖子。php和复制机制。我希望这能节省我花了多少时间才弄明白的人!