Я использую V2.0 и пытаюсь создать сообщение, использующее конечную точку / posts.
Вот сообщение, отправленное с моей просьбой:
var payload = { title : "some title", format : "link", tags: ["tag1", "tag2"], categories: ["newsletter"], content: "http://someurl.com", status: "publish" };
Сообщения успешно создаются, и все остальные поля добавляются за исключением категории и тегов.
Я вижу, что оба они должны взять массив строк. Что мне здесь не хватает?
Кроме того, я попытался добавить как категории, так и теги, которые уже существуют на сайте, и новые. оба не работают.
Вы используете имя в своих терминах. По умолчанию попробуйте использовать существующий идентификатор термина (в вашем случае, идентификатор кота и идентификатор тега).
Если вы увидите https://plugins.trac.wordpress.org/browser/rest-api/trunk/lib/endpoints/class-wp-rest-posts-controller.php#L918, они будут обрабатывать ваш термин, дезактивируя их в -негативное целое число с использованием absint
. Надеюсь, эта помощь.
Вот пример кода для hook rest_insert_{$this->post_type}
чтобы создать термины (теги и категории) и установить в post после сообщения post, созданного wp_insert_post
. Примечание: теги и запрос категории находятся в массиве имен как пример кода 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 ); }