Wordpress REST Créer une publication de type personnalisé

4

J'utilise l'API REST pour créer des publications.

Je peux créer des articles normaux, mais j'aimerais créer des articles de type personnalisé.

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

J'essaie de POST à l'URL ci-dessus avec des données telles que

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 toujours un message normal.

J'ai aussi essayé d'envoyer les données comme

title: 'Loreum Ipsum',
content: 'Test Post',
type: custom_type

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

qui crée également un message normal.

J'utilise POSTMAN pour envoyer les données. Que dois-je essayer d'autre?

Toute aide ou suggestion appréciée!

    
posée linktoahref 14.02.2018 - 14:15

1 réponse

5

Assurez-vous que votre type de publication 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 noeud final pour créer une publication serait alors http://example.com/wp-json/wp/v2/myslug .

Modifier:

Tout ce qui est indiqué ci-dessus est tout ce qui est nécessaire pour qu'un type de publication personnalisé soit disponible en tant que point de terminaison 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();
});
    
réponse donnée Nathan Johnson 14.02.2018 - 17:33

Lire d'autres questions sur les étiquettes