Connecting a taxonomy with a post type

I’ve dealt a similar requirement and so far the best way to do that is by using a custom field to save the related term id.

That means for each ‘practice-area’ post type, there will be a ‘specialty-term-id’ custom field with the ‘specialty’ term id as value.

Here the action hook to create the term for each post

add_action( 'save_post', 'update_related_term');
function update_related_term($post_id) {
$post_type_as_taxonomy = array('practice-area');
$post = get_post( $post_id );
if(in_array($post->post_type, $post_type_as_taxonomy) && $post->post_status=='publish'){
    $term_args['name'] = $post->post_title;
    $term_args['slug'] = $post->post_name.'';
    $term_id = get_post_meta($post_id, $post->post_type.'-term-id', true);
    if($term_id){
        $term = wp_update_term( $term_id, $post->post_type.'-term', $term_args );
    } else {
        $term = wp_insert_term( $term_args['name'], $post->post_type.'-term', $term_args );
        $meta_status = add_post_meta($post_id, $post->post_type.'-term-id', $term['term_id'], true);
    }

}
}

and the action to delete the term on each post delete

add_action('admin_init', 'codex_init');
function codex_init() {
if (current_user_can('delete_posts')){
    add_action('before_delete_post', 'delete_related_term', 10);
}
}
function delete_related_term($post_id) {
$post_type_as_taxonomy = array('practice-area');
$post = get_post( $post_id );
if (in_array($post->post_type, $post_type_as_taxonomy)) {
    $term = get_post_meta($post_id, $post->post_type.'-term-id', true);
    wp_delete_term( $term, $post->post_type.'-term');
}
}

Note that i used ‘practice-area’ as the custom post type and ‘practice-area-term’ as the related taxonomy.

Hope this help