Come Aggiungere una Tassonomia Personalizzata al Plugin WooCommerce
Sto cercando di aggiungere una Tassonomia Personalizzata a WooCommerce targettando il tipo di post 'product'. Ho utilizzato il seguente codice inserendolo nel file functions.php
. Non ricevo messaggi di errore ma la tassonomia non viene visualizzata in WooCommerce. Potete dirmi come posso farlo correttamente o cosa sto sbagliando?
<?php
// Registra Tassonomia Personalizzata
function custom_taxonomy_Item() {
$labels = array(
'name' => 'Elementi',
'singular_name' => 'Elemento',
'menu_name' => 'Elemento',
'all_items' => 'Tutti gli Elementi',
'parent_item' => 'Elemento Genitore',
'parent_item_colon' => 'Elemento Genitore:',
'new_item_name' => 'Nome Nuovo Elemento',
'add_new_item' => 'Aggiungi Nuovo Elemento',
'edit_item' => 'Modifica Elemento',
'update_item' => 'Aggiorna Elemento',
'separate_items_with_commas' => 'Separa Elementi con virgole',
'search_items' => 'Cerca Elementi',
'add_or_remove_items' => 'Aggiungi o rimuovi Elementi',
'choose_from_most_used' => 'Scegli tra gli Elementi più usati',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy( 'item', 'product', $args );
}
?>
Aggiornamento
<?php
add_action( 'init', 'custom_taxonomy_Item' );
// Registra Tassonomia Personalizzata
function custom_taxonomy_Item() {
$labels = array(
'name' => 'Elementi',
'singular_name' => 'Elemento',
'menu_name' => 'Elemento',
'all_items' => 'Tutti gli Elementi',
'parent_item' => 'Elemento Genitore',
'parent_item_colon' => 'Elemento Genitore:',
'new_item_name' => 'Nome Nuovo Elemento',
'add_new_item' => 'Aggiungi Nuovo Elemento',
'edit_item' => 'Modifica Elemento',
'update_item' => 'Aggiorna Elemento',
'separate_items_with_commas' => 'Separa Elementi con virgole',
'search_items' => 'Cerca Elementi',
'add_or_remove_items' => 'Aggiungi o rimuovi Elementi',
'choose_from_most_used' => 'Scegli tra gli Elementi più usati',
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy_for_object_type( 'item', 'product', $args );
}
?>

Devi fare:
add_action( 'init', 'custom_taxonomy_Item' );
Perché:
Usa l'azione init per chiamare questa funzione. Chiamarla al di fuori di un'azione può causare problemi.
vedi la pagina del codex register_taxonomy. Oltre a ciò:
È meglio prevenire che curare quando si registrano tassonomie personalizzate per tipi di post personalizzati. Usa register_taxonomy_for_object_type() subito dopo la funzione per interconnetterli. Altrimenti potresti incappare in problemi dove il tipo di post non è collegato all'interno dei callback dei filtri che vengono eseguiti durante
parse_request
opre_get_posts
.
Quindi è meglio aggiungere:
register_taxonomy_for_object_type( 'item', 'product' );
Oltre a leggere le pagine del codex linkate, potresti dare un'occhiata a:
Tutto questo insieme dovrebbe aiutarti a iniziare.
**Modifica:**
Come ho detto nel commento, funziona per me, questo è il Codice:
add_action( 'init', 'custom_taxonomy_Item' );
function custom_taxonomy_Item() {
$labels = array(
'name' => __('Elementi'),
'singular_name' => __('Elemento'),
'menu_name' => __('Elementi'),
'all_items' => __('Tutti gli Elementi'),
'parent_item' => __('Elemento Genitore'),
'parent_item_colon' => __('Elemento Genitore:'),
'new_item_name' => __('Nome del Nuovo Elemento'),
'add_new_item' => __('Aggiungi Nuovo Elemento'),
'edit_item' => __('Modifica Elemento'),
'update_item' => __('Aggiorna Elemento'),
'separate_items_with_commas' => __('Separa gli Elementi con virgole'),
'search_items' => __('Cerca Elementi'),
'add_or_remove_items' => __('Aggiungi o Rimuovi Elementi'),
'choose_from_most_used' => __('Scegli tra gli Elementi più usati'),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_admin_column' => true,
'show_in_nav_menus' => true,
'show_tagcloud' => true,
);
register_taxonomy( 'item', 'product', $args );
register_taxonomy_for_object_type( 'item', 'product' );
}

Ciao ialocin, grazie per il tuo commento e i tuoi suggerimenti. Ho aggiornato il codice come ho postato sopra ma "Item" non compare ancora nel menu di WooCommerce

Devi aggiungere register_taxonomy_for_object_type
e non sostituire register_taxonomy
. Funziona nel mio ambiente di sviluppo. A proposito, gli attributi del prodotto sono anche loro tassonomie personalizzate. @user1760110

grazie ora funziona MA, non sta aggiungendo alcun Termine al prodotto. se clicchi sull'Elemento e provi ad aggiungere un nuovo Elemento non fa nulla!

Non posso confermarlo, per me funziona perfettamente. @user1760110

Grazie per il tuo aiuto, accetterò il tuo commento come risposta corretta, però devo capire perché non aggiunge i termini!

@user1760110 Ho lo stesso problema, il codice qui sopra non aggiunge nuovi termini per me, hai trovato una soluzione al tuo problema?
