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!
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();
});