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_requestopre_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
user1760110
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
Nicolai Grossherr
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!
user1760110
Non posso confermarlo, per me funziona perfettamente. @user1760110
Nicolai Grossherr
Grazie per il tuo aiuto, accetterò il tuo commento come risposta corretta, però devo capire perché non aggiunge i termini!
user1760110
@user1760110 Ho lo stesso problema, il codice qui sopra non aggiunge nuovi termini per me, hai trovato una soluzione al tuo problema?
tommyf