Cum să Adaugi o Taxonomie Personalizată în Plugin-ul WooCommerce
Î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 );
}
?>
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
saupre_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' );
}

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.

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

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!

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

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 Am aceeași problemă, codul de mai sus nu adaugă termeni noi pentru mine, ai găsit vreo soluție la problema ta?
