Terim eklemekle ilgili gerçekten birkaç sorunum var. İşte benim senaryom: veda_release_type adlı bir sınıflandırma var:
//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);
Açıkçası hierchical. Üst seviye DVD, blu-ray gibi serbest bırakma tiplerini içerir. Bunun altındaki seviye bölgelerdir. Bölge 1, Bölge 2 vb. İstediğim Hiyerarşi: DVD - Bölge 0 - Bölge 1 - Bölge 2 - Bölge 3 - Bölge 4 - Bölge 5 - Bölge 6 Blu-Ray - -Bölge A --Bölge B --Bölge C
Bir terimin var olup olmadığını kontrol etmek için sınıfımda insert_term adlı bir işlev oluşturdum ve sonra yoksa ekleyin:
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;
}
}
Ve sonra terimleri eklemek için adı geçen işlevi çağırırım:
$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']));
Sahip olduğum sorun terimler veritabanına girilse bile, sınıflandırma sayfasında görünmüyor olmasıdır. En fazla, üst düzey terimler görünür. WordPress'i alt düzey terimlerini tanımaya zorlayana kadar çeşitli şeyler denemeliyim. Herkes bunun içine girdi ya da daha iyi bir yol tavsiye edebilir?
DÜZENLEME: Başka bir şey fark ettim: Veritabanından terimleri silmeyi ve ardından terimleri bildiren eklentiyi devre dışı bırakmayı ve yeniden etkinleştirmeyi denedim. İki ana terim terimler sayfasında görünür, ancak alt terimler görünmez. Alt terimler, yeni bir terim oluşturmak istediğiniz "Üst" açılır menüsünde görünür. Üst öğesi alt terimlerden biri olan bir terimi eklediğimde ve sayfayı yenilediğimde, alt terimler ortaya çıkıyor.