J'utilise l'API REST pour créer des publications.
Je peux créer des messages normaux, mais j'aimerais créer des messages de type personnalisé.
http://example.com/wp-json/wp/v2/posts
J'essaie de POST
à l'URL ci-dessus avec les données comme
title: 'Loreum Ipsum',
content: 'Test Post',
post_type: custom_type
qui ne crée pas la publication de type custom_type
mais une publication normale.
J'ai essayé de poster sur
http://example.com/wp-json/wp/v2/posts?post_type=custom_post
avec les données,
title: 'Loreum Ipsum',
content: 'Test Post',
mais cela crée quand même un message normal.
J'ai aussi essayé d'envoyer les données en tant que
title: 'Loreum Ipsum',
content: 'Test Post',
type: custom_type
à http://example.com/wp-json/wp/v2/posts
ce qui crée également un post normal.
J'utilise POSTMAN pour envoyer les données. Quoi d'autre devrais-je essayer?
Toute aide ou suggestion sera appréciée!
Assurez-vous que votre type de message est affiché dans l'API REST.
$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 );
Le point de terminaison pour créer une publication serait alors http://example.com/wp-json/wp/v2/myslug
.
Modifier:
Ce qui précède est tout ce qui est nécessaire pour qu'un type de publication personnalisé soit disponible en tant que noeud final REST à l'aide du contrôleur WP_REST_Posts_Contrôleur par défaut. J'avais initialement le code suivant, car je pense que cela facilite l'utilisation de l'API REST. Cependant, comme indiqué dans les commentaires, il n'est pas nécessaire de répondre à cette question. Vous pouvez simplement utiliser le point final.
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' );
Ensuite, dans my-script.js, utilisez simplement 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();
});