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.
