WordPress REST创建自定义类型的帖子

时间:2018-02-14 作者:linktoahref

我正在使用RESTAPI创建帖子。

我可以创建普通帖子,但我想创建自定义类型的帖子。

http://example.com/wp-json/wp/v2/posts
我正在努力POST 到上面的URL,数据为

title: \'Loreum Ipsum\',
content: \'Test Post\',
post_type: custom_type
不会创建类型为的帖子custom_type 而是创建普通帖子。

我试着发帖到

http://example.com/wp-json/wp/v2/posts?post_type=custom_post
有了这些数据,

title: \'Loreum Ipsum\',
content: \'Test Post\',
但它仍然会创建正常的帖子。

我还尝试将数据发送为

title: \'Loreum Ipsum\',
content: \'Test Post\',
type: custom_type
http://example.com/wp-json/wp/v2/posts

这也会创建普通帖子。

我正在用邮递员发送数据。我还应该尝试什么?

感谢您的帮助或建议!

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

确保您的post类型显示在REST API中。

$args = array(
  //* Use whatever other args you want
  \'show_in_rest\'          => true,
  \'rest_base\'             => \'myslug\',
  \'rest_controller_class\' => \'WP_REST_Posts_Controller\',
);
register_post_type( \'myslug\', $args );
然后,创建帖子的端点将是http://example.com/wp-json/wp/v2/myslug.

编辑:

要使用默认的WP\\U REST\\U Posts\\U控制器将自定义post类型用作REST端点,以上就是所需的全部内容。我最初有以下代码,因为我认为这使使用REST API更容易。然而,正如评论中所指出的,不需要回答这个问题。您可以只使用端点。

function wpse294085_wp_enqueue_scripts() {
  wp_enqueue_script( \'wp-api\' );
  wp_enqueue_script( \'my-script\', PATH_TO . \'my-script.js\', [ \'wp-api\' ] );
}
add_action( \'wp_enqueue_scripts\', \'wpse294085_wp_enqueue_scripts\' );
然后在我的脚本中。js,只需使用主干。

wp.api.loadPromise.done( function() {
  var post = new wp.api.models.Myslug( {
    \'id\': null,
    \'title\': \'Example New Post\',
    \'content\': \'YOLO\'
  } );
  var xhr = post.save();
});

结束