Adăugarea suportului pentru taxonomia de categorii la tipurile de postări personalizate

2 apr. 2012, 17:03:59
Vizualizări: 42K
Voturi: 6

Scriu cod care folosește intensiv tipuri de postări personalizate (custom post types) și caut o modalitate de a adăuga programatic o categorie la un tip de postare personalizat definit, și apoi de a accesa ID-ul categoriei respective.

Am investigat puțin dar nu par să găsesc o metodă robustă de a realiza acest lucru - wp_create_category ar fi alegerea evidentă dar bineînțeles că aceasta nu suportă tipuri de postări personalizate.

0
Toate răspunsurile la întrebare 3
0
11

În interiorul funcției register_post_type poți adăuga parametrul taxonomies.

register_post_type('discography',
    array(
    'labels' => array(
             //etichetele tale
             ),

  'taxonomies' => array('recordings', 'category', 'whatever'),  //adaugă asta....

  'public' => true,
  'show_ui' => true,
  'exclude_from_search' => true,
  'hierarchical' => true,
  'supports' => array( 'title', 'editor', 'thumbnail' ),
  'query_var' => true
        )
  );

Alternativ, poți folosi register_taxonomy_for_object_type, http://codex.wordpress.org/Function_Reference/register_taxonomy_for_object_type

2 apr. 2012 18:07:33
1

Te rugăm să introduci acest cod în functions.php al temei

function post_type_discog() {

register_post_type('discography',
    array(
    'labels' => array(
            'name' => __( 'Discografie' ),
            'singular_name' => __( 'Discografie' ),
            'add_new' => __( 'Adaugă nou' ),
            'add_new_item' => __( 'Adaugă discografie nouă' ),
            'edit' => __( 'Editează' ),
            'edit_item' => __( 'Editează discografia' ),
            'new_item' => __( 'Discografie nouă' ),
            'view' => __( 'Vezi discografie' ),
            'view_item' => __( 'Vezi discografie' ),
            'search_items' => __( 'Caută discografii' ),
            'not_found' => __( 'Nicio discografie găsită' ),
            'not_found_in_trash' => __( 'Nicio discografie în coșul de gunoi' ),
            'parent' => __( 'Discografie părinte' ),
        ),
  '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()
{
  // Adaugă o nouă taxonomie, fă-o ierarhică (ca și categorii)
  $labels = array(
    'name' => _x( 'Înregistrări', 'nume general taxonomie' ),
    'singular_name' => _x( 'Înregistrare', 'nume singular taxonomie' ),
    'search_items' =>  __( 'Caută înregistrări' ),
    'popular_items' => __( 'Înregistrări populare' ),
    'all_items' => __( 'Toate înregistrările' ),
    'parent_item' => __( 'Înregistrare părinte' ),
    'parent_item_colon' => __( 'Înregistrare părinte:' ),
    'edit_item' => __( 'Editează înregistrare' ),
    'update_item' => __( 'Actualizează înregistrare' ),
    'add_new_item' => __( 'Adaugă înregistrare nouă' ),
    'new_item_name' => __( 'Nume înregistrare nouă' ),
  );
  register_taxonomy('recordings',array('discography'), array(
    'hierarchical' => true,
    'labels' => $labels,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => array( 'slug' => 'inregistrari' ),
  ));
}

Acest cod îți permite să creezi un tip de postare personalizată și un tip de categorie personalizată. Poate fi de ajutor pentru tine.

2 apr. 2012 17:14:52
Comentarii

Mulțumesc - dar asta este partea pe care am obținut-o deja. Ceea ce am nevoie acum este să adaug categorii reale (în acest caz, să adaug înregistrări reale)

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

dacă trebuie să creezi în avans niște termeni, poți adăuga următoarele în funcția init care înregistrează taxonomia. va crea termenul foo în taxonomia recordings

if (!term_exists( 'foo', 'recordings') ){
        wp_insert_term( 'foo', 'recordings' );
    })
2 apr. 2012 18:27:21
Comentarii

Este perfect! Există vreo modalitate de a obține ID-ul termenului creat? Nu mi-am formulat întrebarea foarte bine, așa că îți mulțumesc mult.

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

funcția wp_insert_term returnează ID-urile termenului și taxonomiei, vezi: http://codex.wordpress.org/Function_Reference/wp_insert_term#Return_Values poți folosi și get_term_by: http://codex.wordpress.org/Function_Reference/get_term_by

helgatheviking helgatheviking
3 apr. 2012 00:20:06