Aggiungere il Supporto alla Tassonomia Categoria al Custom Post Type
Sto scrivendo del codice che fa ampio uso di custom post type e sto cercando un modo per aggiungere programmaticamente una categoria a un custom post type definito, e poi accedere al suo ID categoria.
Ho dato un'occhiata in giro ma non riesco a trovare un metodo robusto per ottenerlo - wp_create_category sarebbe la scelta ovvia ma ovviamente non supporta i custom post type.

All'interno del tuo register_post_type
puoi aggiungere il parametro taxonomies
.
register_post_type('discography',
array(
'labels' => array(
//le tue etichette
),
'taxonomies' => array('recordings', 'category', 'whatever'), //aggiungi questo....
'public' => true,
'show_ui' => true,
'exclude_from_search' => true,
'hierarchical' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'query_var' => true
)
);
In alternativa puoi usare register_taxonomy_for_object_type
, http://codex.wordpress.org/Function_Reference/register_taxonomy_for_object_type

Per favore inserisci questo codice nel file functions.php del tema
function post_type_discog() {
register_post_type('discography',
array(
'labels' => array(
'name' => __( 'Discografia' ),
'singular_name' => __( 'Discografia' ),
'add_new' => __( 'Aggiungi Nuovo' ),
'add_new_item' => __( 'Aggiungi Nuova Discografia' ),
'edit' => __( 'Modifica' ),
'edit_item' => __( 'Modifica Discografia' ),
'new_item' => __( 'Nuova Discografia' ),
'view' => __( 'Visualizza Discografia' ),
'view_item' => __( 'Visualizza Discografia' ),
'search_items' => __( 'Cerca Discografie' ),
'not_found' => __( 'Nessuna Discografia trovata' ),
'not_found_in_trash' => __( 'Nessuna Discografia trovata nel Cestino' ),
'parent' => __( 'Discografia Genitore' ),
),
'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()
{
// Aggiungi una nuova tassonomia, rendila gerarchica (come le categorie)
$labels = array(
'name' => _x( 'Registrazioni', 'nome generale tassonomia' ),
'singular_name' => _x( 'Registrazione', 'nome singolare tassonomia' ),
'search_items' => __( 'Cerca Registrazioni' ),
'popular_items' => __( 'Registrazioni Popolari' ),
'all_items' => __( 'Tutte le Registrazioni' ),
'parent_item' => __( 'Registrazione Genitore' ),
'parent_item_colon' => __( 'Registrazione Genitore:' ),
'edit_item' => __( 'Modifica Registrazione' ),
'update_item' => __( 'Aggiorna Registrazione' ),
'add_new_item' => __( 'Aggiungi Nuova Registrazione' ),
'new_item_name' => __( 'Nome Nuova Registrazione' ),
);
register_taxonomy('recordings',array('discography'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'registrazioni' ),
));
}
Con questo codice puoi creare un custom post type e un tipo di categoria personalizzato. Spero che questo codice ti sia utile.

se hai bisogno di creare in anticipo alcuni termini, puoi aggiungere il seguente codice nella funzione init che registra la tassonomia. Questo creerà il termine "foo" nella tassonomia "recordings"
if (!term_exists( 'foo', 'recordings') ){
wp_insert_term( 'foo', 'recordings' );
})

Perfetto! C'è un modo per ottenere l'ID del termine creato? Non ho formulato particolarmente bene la mia domanda, quindi grazie mille.

beh, wp_insert_term restituisce gli ID del termine e della tassonomia vedi: http://codex.wordpress.org/Function_Reference/wp_insert_term#Return_Values potresti anche usare get_term_by: http://codex.wordpress.org/Function_Reference/get_term_by
