Come Aggiungere una Tassonomia Personalizzata al Plugin WooCommerce

25 nov 2013, 22:34:11
Visualizzazioni: 38.9K
Voti: 12

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 );

}
?>
2
Commenti

a quale azione hai agganciato la tua funzione custom_taxonomy_Item?

Milo Milo
25 nov 2013 22:39:54

Sinceramente, non sapevo a quale azione agganciarla? Non sono riuscito a trovare quale parte del plugin gestisce questo?

user1760110 user1760110
25 nov 2013 22:46:26
Tutte le risposte alla domanda 1
9
19

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 o pre_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' );
}
25 nov 2013 22:46:29
Commenti

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 user1760110
25 nov 2013 22:53:21

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 Nicolai Grossherr
25 nov 2013 22:59:45

È strano! Non funziona per me

user1760110 user1760110
25 nov 2013 23:01:02

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 user1760110
25 nov 2013 23:09:41

Non posso confermarlo, per me funziona perfettamente. @user1760110

Nicolai Grossherr Nicolai Grossherr
25 nov 2013 23:13:03

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

user1760110 user1760110
25 nov 2013 23:16:57

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

tommyf tommyf
24 apr 2014 11:48:58

+1 su register_taxonomy_for_object_type( 'item', 'product' );

Magico Magico
5 giu 2014 17:17:41

Ha funzionato perfettamente dopo aver aggiunto entrambe le righe register_taxonomy( 'item', 'product', $args ); register_taxonomy_for_object_type( 'item', 'product' );

Ariful Haque Ariful Haque
26 ott 2016 13:42:04
Mostra i restanti 4 commenti