Agregar soporte de taxonomía de categorías a un tipo de entrada personalizada
Estoy escribiendo código que hace un uso extensivo de tipos de entrada personalizados y estoy buscando una forma de agregar programáticamente una categoría a un tipo de entrada personalizada definido, y luego acceder a su ID de categoría.
Estuve investigando pero no puedo encontrar una forma robusta de lograrlo - wp_create_category sería la opción obvia pero por supuesto esto no funciona con tipos de entrada personalizados.

Dentro de tu función register_post_type
puedes añadir el parámetro taxonomies
.
register_post_type('discography',
array(
'labels' => array(
//tus etiquetas aquí
),
'taxonomies' => array('recordings', 'category', 'whatever'), //añade esto....
'public' => true,
'show_ui' => true,
'exclude_from_search' => true,
'hierarchical' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'query_var' => true
)
);
Alternativamente puedes usar register_taxonomy_for_object_type
, http://codex.wordpress.org/Function_Reference/register_taxonomy_for_object_type

Por favor coloca este código en el functions.php de tu tema
function post_type_discog() {
register_post_type('discography',
array(
'labels' => array(
'name' => __( 'Discografía' ),
'singular_name' => __( 'Discografía' ),
'add_new' => __( 'Añadir nuevo' ),
'add_new_item' => __( 'Añadir nueva discografía' ),
'edit' => __( 'Editar' ),
'edit_item' => __( 'Editar discografía' ),
'new_item' => __( 'Nueva discografía' ),
'view' => __( 'Ver discografía' ),
'view_item' => __( 'Ver discografía' ),
'search_items' => __( 'Buscar discografías' ),
'not_found' => __( 'No se encontraron discografías' ),
'not_found_in_trash' => __( 'No hay discografías en la papelera' ),
'parent' => __( 'Discografía padre' ),
),
'public' => true,
'show_ui' => true,
'exclude_from_search' => true,
'hierarchical' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'query_var' => true
)
);
}
add_action('init', 'post_type_discog');
add_action( 'init', 'create_discog_taxonomies', 0 );
function create_discog_taxonomies()
{
// Añadir nueva taxonomía, hacerla jerárquica (como categorías)
$labels = array(
'name' => _x( 'Grabaciones', 'taxonomy general name' ),
'singular_name' => _x( 'Grabación', 'taxonomy singular name' ),
'search_items' => __( 'Buscar grabaciones' ),
'popular_items' => __( 'Grabaciones populares' ),
'all_items' => __( 'Todas las grabaciones' ),
'parent_item' => __( 'Grabación padre' ),
'parent_item_colon' => __( 'Grabación padre:' ),
'edit_item' => __( 'Editar grabación' ),
'update_item' => __( 'Actualizar grabación' ),
'add_new_item' => __( 'Añadir nueva grabación' ),
'new_item_name' => __( 'Nombre de nueva grabación' ),
);
register_taxonomy('recordings',array('discography'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'recordings' ),
));
}
Con este código puedes crear un tipo de entrada personalizada y un tipo de categoría personalizada. Este código puede serte útil.

¡Perfecto! ¿Hay alguna forma de obtener el ID del término creado? No expresé mi pregunta muy bien, así que muchas gracias.

wp_insert_term devuelve los IDs del término y la taxonomía, mira aquí: http://codex.wordpress.org/Function_Reference/wp_insert_term#Return_Values también podrías usar get_term_by: http://codex.wordpress.org/Function_Reference/get_term_by
