Cum să Adaugi o Taxonomie Personalizată în Plugin-ul WooCommerce

25 nov. 2013, 22:34:11
Vizualizări: 38.9K
Voturi: 12

Încerc să adaug o Taxonomie Personalizată în WooCommerce prin targetarea tipului de postare product din WooCommerce. Am folosit următorul cod și l-am adăugat în functions.php. Nu primesc niciun mesaj de eroare, dar taxonomia nu apare în WooCommerce. Îmi puteți spune cum pot face acest lucru sau ce greșesc aici?

<?php
// Înregistrare Taxonomie Personalizată
function custom_taxonomy_Item()  {

$labels = array(
    'name'                       => 'Articole',
    'singular_name'              => 'Articol',
    'menu_name'                  => 'Articol',
    'all_items'                  => 'Toate Articolele',
    'parent_item'                => 'Articol Părinte',
    'parent_item_colon'          => 'Articol Părinte:',
    'new_item_name'              => 'Nume Articol Nou',
    'add_new_item'               => 'Adaugă Articol Nou',
    'edit_item'                  => 'Editează Articol',
    'update_item'                => 'Actualizează Articol',
    'separate_items_with_commas' => 'Separă Articolele cu virgule',
    'search_items'               => 'Caută Articole',
    'add_or_remove_items'        => 'Adaugă sau șterge Articole',
    'choose_from_most_used'      => 'Alege dintre cele mai folosite Articole',
);
$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 );
}
?>

Actualizare

<?php
add_action( 'init', 'custom_taxonomy_Item' );

// Înregistrare Taxonomie Personalizată
function custom_taxonomy_Item()  {

$labels = array(
    'name'                       => 'Articole',
    'singular_name'              => 'Articol',
    'menu_name'                  => 'Articol',
    'all_items'                  => 'Toate Articolele',
    'parent_item'                => 'Articol Părinte',
    'parent_item_colon'          => 'Articol Părinte:',
    'new_item_name'              => 'Nume Articol Nou',
    'add_new_item'               => 'Adaugă Articol Nou',
    'edit_item'                  => 'Editează Articol',
    'update_item'                => 'Actualizează Articol',
    'separate_items_with_commas' => 'Separă Articolele cu virgule',
    'search_items'               => 'Caută Articole',
    'add_or_remove_items'        => 'Adaugă sau șterge Articole',
    'choose_from_most_used'      => 'Alege dintre cele mai folosite Articole',
);
$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
Comentarii

la ce acțiune ai conectat funcția ta custom_taxonomy_Item?

Milo Milo
25 nov. 2013 22:39:54

Sincer, nu știam la ce acțiune să mă conectez? Nu am putut găsi care parte din plugin se ocupă de asta?

user1760110 user1760110
25 nov. 2013 22:46:26
Toate răspunsurile la întrebare 1
9
19

Trebuie să faci:

add_action( 'init', 'custom_taxonomy_Item' );

Deoarece:

Folosește acțiunea init pentru a apela această funcție. Apelarea ei în afara unei acțiuni poate duce la probleme.

vezi pagina codex register_taxonomy. Pe lângă asta:

Mai bine prevenit decât tratat când înregistrezi taxonomii personalizate pentru tipuri de postări personalizate. Folosește register_taxonomy_for_object_type() imediat după funcție pentru a le interconecta. Altfel, poți întâmpina capcane minore unde tipul de postare nu este atașat în interiorul callback-urilor de filtrare care rulează în timpul parse_request sau pre_get_posts.

Deci mai bine adaugă:

register_taxonomy_for_object_type( 'item', 'product' );

Pe lângă citirea paginilor codex menționate, poți arunca o privire la:

Toate acestea împreună ar trebui să te ajute să începi.



**Editare:**

După cum am spus în comentariu, funcționează pentru mine, acesta este Codul:

add_action( 'init', 'custom_taxonomy_Item' );
function custom_taxonomy_Item()  {
    $labels = array(
        'name'                       => __('Articole'),
        'singular_name'              => __('Articol'),
        'menu_name'                  => __('Articole'),
        'all_items'                  => __('Toate articolele'),
        'parent_item'                => __('Articol părinte'),
        'parent_item_colon'          => __('Articol părinte:'),
        'new_item_name'              => __('Nume articol nou'),
        'add_new_item'               => __('Adaugă articol nou'),
        'edit_item'                  => __('Editează articol'),
        'update_item'                => __('Actualizează articol'),
        'separate_items_with_commas' => __('Separați articolele cu virgule'),
        'search_items'               => __('Caută articole'),
        'add_or_remove_items'        => __('Adaugă sau elimină articole'),
        'choose_from_most_used'      => __('Alege dintre cele mai folosite articole'),
    );
    $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
Comentarii

Salut ialocin, mulțumesc pentru comentariu și sugestii. Am actualizat codul așa cum am postat mai sus, dar "Item" încă nu apare în meniul WooCommerce.

user1760110 user1760110
25 nov. 2013 22:53:21

Trebuie să adaugi register_taxonomy_for_object_type și nu să înlocuiești register_taxonomy. Funcționează în mediul meu de dezvoltare. Apropo, atributele de produs sunt și ele taxonomii personalizate. @user1760110

Nicolai Grossherr Nicolai Grossherr
25 nov. 2013 22:59:45

Este ciudat! Nu funcționează la mine.

user1760110 user1760110
25 nov. 2013 23:01:02

mersi, acum funcționează DAR, nu adaugă niciun termen la produs. dacă dai click pe articol și încerci să adaugi un articol nou, nu se întâmplă nimic!

user1760110 user1760110
25 nov. 2013 23:09:41

Nu pot confirma asta, la mine funcționează perfect. @user1760110

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

Mulțumesc pentru ajutor, am să accept comentariul tău ca răspuns corect, totuși trebuie să îmi dau seama de ce nu adaugă termeni!

user1760110 user1760110
25 nov. 2013 23:16:57

@user1760110 Am aceeași problemă, codul de mai sus nu adaugă termeni noi pentru mine, ai găsit vreo soluție la problema ta?

tommyf tommyf
24 apr. 2014 11:48:58

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

Magico Magico
5 iun. 2014 17:17:41

A funcționat perfect după ce am adăugat ambele linii register_taxonomy( 'item', 'product', $args ); register_taxonomy_for_object_type( 'item', 'product' );

Ariful Haque Ariful Haque
26 oct. 2016 13:42:04
Arată celelalte 4 comentarii