Tôi thực sự có một vài vấn đề với việc chèn các điều khoản. Đây là kịch bản của tôi: Tôi có một phân loại gọi là 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);
Đó rõ ràng là chữ tượng hình. Cấp cao nhất chứa các loại phát hành egDVD, blu-ray. Các cấp dưới đó là khu vực tức là. Vùng 1, Vùng 2, v.v ... Vì vậy, Phân cấp mà tôi muốn là: DVD --Region 0 --Region 1 --Region 2 --Region 3 --Region 4 --Region 5 --Region 6 Blu-Ray - -Region A --Region B --Region C
Tôi đã tạo một hàm có tên là insert_term trong lớp của mình để kiểm tra xem một thuật ngữ có tồn tại hay không, sau đó chèn nó nếu nó không:
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;
}
}
Và sau đó tôi gọi hàm đã nói để chèn các điều khoản:
$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']));
Vấn đề tôi gặp phải là mặc dù các thuật ngữ được nhập vào cơ sở dữ liệu, chúng không hiển thị trên trang phân loại. Nhiều nhất, các điều khoản cấp cao nhất hiển thị. Tôi phải thử nhiều thứ khác nhau cho đến khi nó buộc WordPress phải nhận ra các điều khoản cấp dưới. Có ai gặp phải vấn đề này hoặc có thể đề xuất một cách tốt hơn?
EDIT: Thông báo một cái gì đó khác: Tôi đã cố gắng xóa các điều khoản khỏi cơ sở dữ liệu sau đó hủy kích hoạt và kích hoạt lại plugin khai báo các điều khoản. Hai thuật ngữ cha mẹ hiển thị trong trang điều khoản, nhưng các điều khoản con thì không. Các thuật ngữ con DO hiển thị trong menu thả xuống "Phụ huynh" nơi bạn muốn tạo một thuật ngữ mới. Khi tôi thêm một thuật ngữ có cha mẹ là một trong những thuật ngữ con và làm mới trang, THÌ các thuật ngữ con xuất hiện.