wake-up-neo.com

Warum werden keine Tags und Kategorien in der Post-Anfrage zu hinzugefügt? WP Rest API

Ich verwende V2.0 und versuche, einen Beitrag mit dem Endpunkt/posts zu erstellen.

Hier ist die Nutzlast, die mit meiner Anfrage gesendet wird:

var payload =
   {
     title : "some title",
     format : "link",
     tags: ["tag1", "tag2"],
     categories: ["newsletter"],
     content: "http://someurl.com",
     status: "publish"
   };

Die Beiträge werden erfolgreich erstellt und alle anderen Felder mit Ausnahme der Kategorie und der Tags werden hinzugefügt.

Ich sehe, dass beide eine Reihe von Zeichenfolgen nehmen sollen. Was vermisse ich hier?

Außerdem habe ich versucht, sowohl Kategorien und Tags, die bereits auf der Website vorhanden sind, als auch brandneue hinzuzufügen. beide funktionieren nicht.

1
DMTintner

Sie verwenden den Namen in Ihren Begriffen. Versuchen Sie standardmäßig, die vorhandene Term-ID zu verwenden (in Ihrem Fall die Katzen-ID und die Tag-ID).

Wenn Sie https://plugins.trac.wordpress.org/browser/rest-api/trunk/lib/endpoints/class-wp-rest-posts-controller.php#L918 sehen, wird Ihre Laufzeit mit behandelt bereinigen Sie sie mit absint in eine nicht negative Ganzzahl. Ich hoffe diese Hilfe.

Hier ein Beispielcode zum Verknüpfen von rest_insert_{$this->post_type}, um Begriffe (Tags und Kategorien) zu erstellen und nach der von wp_insert_post erstellten Beitrags-ID in post zu setzen. Hinweis: Tags und Kategorieanforderungen werden als OP-Beispielcode im Namensfeld angezeigt.

add_action( 'rest_insert_post', 'wpse220930_rest_insert_post', 1, 3 );
function wpse220930_rest_insert_post( $post, $request, $update = true )
{
    if ( ! empty( $request['tags'] ) )
        wp_set_object_terms( $post->ID, $request['tags'], 'post_tag', $update );

    if ( ! empty( $request['categories'] ) )
        wp_set_object_terms( $post->ID, $request['categories'], 'category', $update );
}
2
Jevuska