web-dev-qa-db-fra.com

Pourquoi les balises et les catégories ne sont-elles pas ajoutées dans la demande de publication WP API de repos

J'utilise V2.0 et j'essaie de créer une publication à l'aide du point de terminaison/posts.

Voici la charge utile envoyée avec ma demande:

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

Les articles sont en cours de création et tous les autres champs sont ajoutés à l'exception de la catégorie et des balises.

Je vois que les deux sont censés prendre un tableau de chaînes. Qu'est-ce que j'oublie ici?

De plus, j'ai essayé d'ajouter des catégories et des balises déjà existantes sur le site, ainsi que de toutes nouvelles. les deux ne fonctionnent pas.

1
DMTintner

Vous utilisez le nom dans vos termes. Par défaut, essayez d'utiliser l'identifiant de terme existant (dans votre cas, l'identifiant de chat et l'identifiant de balise).

Si vous voyez https://plugins.trac.wordpress.org/browser/rest-api/trunk/lib/endpoints/class-wp-rest-posts-controller.php#L918 ils gèreront votre mandat avec assainissez-les en un entier non négatif en utilisant absint. J'espère que cette aide.

Voici un exemple de code à raccorder rest_insert_{$this->post_type} pour créer des termes (balises et catégories) et définir dans post après ID créé par wp_insert_post . Remarque: les balises et la demande de catégorie se trouvent dans le tableau de noms en tant que code exemple OP.

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