投稿を作成するのにREST APIを使用しています。
通常の投稿を作成できますが、カスタムタイプの投稿を作成したいと思います。
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を使用しています。他に何を試すべきですか?
任意の助けや提案を感謝します!
投稿の種類が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_REST_Posts_Controllerを使用して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' );
それから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();
});