it-swarm.com.de

Wordpress REST Beitrag vom benutzerdefinierten Typ erstellen

Ich verwende die REST API, um Posts zu erstellen.

Ich kann normale Beiträge erstellen, möchte jedoch benutzerdefinierte Beiträge erstellen.

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

Ich versuche, POST auf die oben angegebene URL mit Daten wie

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

der Beitrag vom Typ custom_type wird nicht erstellt, stattdessen wird ein normaler Beitrag erstellt.


Ich habe versucht, auf zu posten

http://example.com/wp-json/wp/v2/posts?post_type=custom_post

mit den Daten,

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

aber trotzdem schafft es normale post.


Ich habe auch versucht, die Daten als zu senden

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

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

das schafft auch normale post.


Ich benutze POSTMAN, um die Daten zu senden. Was soll ich noch versuchen?

Jede Hilfe oder Anregungen geschätzt!

4
linktoahref

Stellen Sie sicher, dass Ihr Beitragstyp in der REST-API angezeigt wird.

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

Der Endpunkt zum Erstellen eines Posts wäre dann http://example.com/wp-json/wp/v2/myslug.

Bearbeiten:

Das Obige ist alles, was für einen benutzerdefinierten Beitragstyp erforderlich ist, damit er als REST -Endpunkt mit dem Standard-WP_REST_Posts_Controller verfügbar ist. Ich hatte anfangs den folgenden Code, weil ich denke, dass dies die Verwendung der REST -API erleichtert. Wie in den Kommentaren erwähnt, ist es jedoch nicht erforderlich, diese Frage zu beantworten. Sie können nur den Endpunkt verwenden.

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

Verwenden Sie dann in my-script.js einfach 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