WP-API pomimo wersji 1.2 wciąż posiada pewne braki w oferowanych funkcjach, szczególnie jeżeli chodzi o tworzenie treści. Jednym z większych braków jest moim zdaniem brak możliwości bezpośredniego określenia taksonomii (m.in. kategorii i tagów) wpisu przy jego tworzeniu.
Na szczęście problem ten można bardzo łatwo rozwiązać poprzez wykorzystanie akcji json_insert_post:
function rest_api_add_taxonomy($post, $data, $update){ if( !empty($data['taxonomies']) && is_array($data['taxonomies']) ) { foreach( $data['taxonomies'] as $taxonomy => $terms ){ wp_set_post_terms($post['ID'], $terms, $taxonomy); } } } add_action('json_insert_post', 'rest_api_add_taxonomy', 10, 3);
Po dodaniu powyższego kodu np. w pliku functions.php naszego motywu, możemy w danych JSON wysyłanych do naszego WordPressa dodać następujący blok:
"taxonomies": { "category": "1,2,3" }
Możemy też odwoływać się do własnych taksonomii:
"taxonomies": { "my_category": "1,2,3" }
W wypadku hierarchicznych taksonomii należy podawać ID poszczególnych kategorii, w wypadku tagów należy podawać ich nazwy – dokładnie tak jak ma to miejsce przy wywołaniu funkcji wp_set_post_terms.