Aggiungere il Supporto alla Tassonomia Categoria al Custom Post Type

2 apr 2012, 17:03:59
Visualizzazioni: 42K
Voti: 6

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.

0
Tutte le risposte alla domanda 3
0
11

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

2 apr 2012 18:07:33
1

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.

2 apr 2012 17:14:52
Commenti

Grazie - ma questa è la parte che ho già fatto. Quello che mi serve ora è aggiungere categorie reali (in questo caso, aggiungere registrazioni effettive)

George Pearce George Pearce
2 apr 2012 17:32:55
2

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' );
    })
2 apr 2012 18:27:21
Commenti

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

George Pearce George Pearce
2 apr 2012 23:44:00

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

helgatheviking helgatheviking
3 apr 2012 00:20:06