Saya benar-benar mengalami beberapa masalah dengan memasukkan istilah. Ini skenario saya: Saya punya taksonomi yang disebut veda_release_type:
//Release Type and Region
$labels = array(
'name'=> _x('Release Types/Regions', 'taxonomy general name' ),
'singular_name' => _x('Release Type/Region', 'taxonomy singular name'),
'search_items' => __('Search Release Types/Regions'),
'popular_items' => __('Popular Release Types/Regions'),
'all_items' => __('All Release Types/Regions'),
'edit_item' => __('Edit Release Type/Regions'),
'edit_item' => __('Edit Release Type/Region'),
'update_item' => __('Update Release Type/Region'),
'add_new_item' => __('Add New Release Type/Region'),
'new_item_name' => __('New Release Type/Region Name'),
'separate_items_with_commas' => __('Seperate Release Types/Regions with Commas'),
'add_or_remove_items' => __('Add or Remove Release Types/Regions'),
'choose_from_most_used' => __('Choose from Most Used Release Types/Regions')
);
$args = array(
'hierarchical' =>true,
'labels' => $labels,
'query_var' => true,
'rewrite' => array('slug' =>'release_type')
);
register_taxonomy('veda_release_type', 'veda_release',$args);
Jelas ini hierarki. Level atas berisi tipe rilis ieDVD, blu-ray. Tingkat di bawah itu adalah daerah yaitu. Wilayah 1, Wilayah 2, dll. Jadi, Hirarki yang saya inginkan adalah: DVD --Region 0 --Region 1 --Region 2 --Region 3 --Region 4 --Region 5 --Region 5 --Region 6 Blu-Ray - -Region A --Region B --Region C
Saya membuat fungsi yang disebut insert_term di kelas saya untuk memeriksa apakah ada istilah, lalu masukkan jika tidak:
public function insert_term ($term, $taxonomy, $args = array()) {
if (isset($args['parent'])) {
$parent = $args['parent'];
} else {
$parent = 0;
}
$result = term_exists($term, $taxonomy, $parent);
if ($result == false || $result == 0) {
return wp_insert_term($term, $taxonomy, $args);
} else {
return (array) $result;
}
}
Dan kemudian saya memanggil fungsi kata untuk memasukkan istilah:
$dvd = $this->insert_term('DVD','veda_release_type');
$this->insert_term('Region 0','veda_release_type',array('parent'=>$dvd['term_id']));
$this->insert_term('Region 1','veda_release_type',array('parent'=>$dvd['term_id']));
$this->insert_term('Region 2','veda_release_type',array('parent'=>$dvd['term_id']));
$this->insert_term('Region 3','veda_release_type',array('parent'=>$dvd['term_id']));
$this->insert_term('Region 4','veda_release_type',array('parent'=>$dvd['term_id']));
$this->insert_term('Region 5','veda_release_type',array('parent'=>$dvd['term_id']));
$this->insert_term('Region 6','veda_release_type',array('parent'=>$dvd['term_id']));
$bd = $this->insert_term('Blu-Ray', 'veda_release_type');
$this->insert_term('Region A','veda_release_type',array('parent'=>$bd['term_id']));
$this->insert_term('Region B','veda_release_type',array('parent'=>$bd['term_id']));
$this->insert_term('Region C','veda_release_type',array('parent'=>$bd['term_id']));
Masalah yang saya alami adalah bahwa meskipun istilah dimasukkan dalam database, mereka tidak muncul di halaman taksonomi. Paling-paling, istilah tingkat atas muncul. Saya harus mencoba berbagai hal sampai memaksa WordPress untuk mengenali istilah sublevel. Adakah yang mengalami hal ini atau dapat merekomendasikan cara yang lebih baik?
EDIT: Memperhatikan sesuatu yang lain: Saya mencoba menghapus persyaratan dari basis data kemudian menonaktifkan dan mengaktifkan kembali plugin yang menyatakan persyaratan. Dua istilah induk muncul di halaman syarat, tetapi istilah anak tidak. Istilah anak DO muncul di menu tarik turun "Induk" tempat Anda ingin membuat istilah baru. Ketika saya menambahkan istilah yang orang tuanya adalah salah satu istilah anak dan menyegarkan halaman, MAKA istilah anak muncul.