Przypisywanie tagów i kategorii przy tworzeniu wpisów poprzez WP-API.

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.