web-dev-qa-db-ja.com

ワードプレス REST カスタムタイプの投稿を作成

投稿を作成するのにREST AP​​Iを使用しています。

通常の投稿を作成できますが、カスタムタイプの投稿を作成したいと思います。

http://example.com/wp-json/wp/v2/posts

上記のURLへのデータをPOSTにしてみています

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

これも通常の投稿を作成します。


データの送信にPOSTMANを使用しています。他に何を試すべきですか?

任意の助けや提案を感謝します!

4
linktoahref

投稿の種類がREST AP​​Iに表示されていることを確認してください。

$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_REST_Posts_Controllerを使用してRESTエンドポイントとして使用できるようにするには、カスタム投稿タイプに必要なものがすべてです。 REST AP​​Iの使用が簡単になると思うので、最初は次のコードを使用しました。しかし、コメントで指摘されているように、この質問に答える必要はありません。あなただけのエンドポイントを使用することができます。

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' );

それからmy-script.jsで、Backboneを使うだけです。

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