용어를 삽입하는 데 실제로 몇 가지 문제가 있습니다. 시나리오는 다음과 같습니다. 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);
분명히 계층 적입니다. 최상위 레벨에는 DVD, blu-ray와 같은 릴리스 유형이 포함됩니다. 그 아래 수준은 지역입니다. 지역 1, 지역 2 등 내가 원하는 계층은 다음과 같습니다. DVD-지역 0-지역 1-지역 2-지역 3-지역 4-지역 5-지역 6 Blu-Ray- -지역 A-지역 B-지역 C
클래스에 insert_term이라는 함수를 만들어서 용어가 있는지 확인한 다음 존재하지 않는 경우 삽입합니다.
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;
}
}
그런 다음 해당 함수를 호출하여 용어를 삽입합니다.
$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']));
내가 겪고있는 문제는 데이터베이스에 용어가 입력되었지만 분류 페이지에 표시되지 않는다는 것입니다. 기껏해야 최상위 용어가 나타납니다. WordPress에서 하위 수준 용어를 인식하게 할 때까지 다양한 작업을 시도해야합니다. 누구든지 이것에 부딪 치거나 더 나은 방법을 추천 할 수 있습니까?
편집 : 다른 것을 알아 냈습니다 : 데이터베이스에서 용어를 삭제 한 다음 용어를 선언하는 플러그인을 비활성화하고 다시 활성화하려고했습니다. 두 개의 상위 용어가 용어 페이지에 표시되지만 하위 용어는 표시되지 않습니다. 하위 용어 DO는 새 용어를 만들려는 "부모"드롭 다운 메뉴에 나타납니다. 부모가 자식 용어 중 하나 인 용어를 추가하고 페이지를 새로 고치면 자식 용어가 표시됩니다.