Estou realmente tendo alguns problemas com a inserção de termos. Aqui está o meu cenário: eu tenho uma taxonomia chamada 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);
É obviamente hierárquico. O nível superior contém tipos de versão, como DVD, blu-ray. O nível abaixo disso são regiões, ie. Região 1, Região 2, etc. Portanto, a Hierarquia que eu quero é: DVD - Região 0 - Região 1 - Região 2 - Região 2 - Região 3 - Região 4 - Região 5 - Região 6 Blu-Ray - -Região A --Região B --Região C
Eu criei uma função chamada insert_term na minha classe para verificar se existe um termo e insira-o se não existir:
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;
}
}
E então eu chamo a referida função para inserir os termos:
$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']));
O problema que estou tendo é que, embora os termos sejam inseridos no banco de dados, eles não aparecem na página de taxonomia. No máximo, os termos de nível superior são exibidos. Eu tenho que tentar várias coisas até que isso força o WordPress a reconhecer os termos do subnível. Alguém já se deparou com isso ou pode recomendar uma maneira melhor?
EDIT: Notou outra coisa: tentei excluir os termos do banco de dados, desativar e reativar o plug-in que declara os termos. Os dois termos pai aparecem na página de termos, mas os termos filhos não. Os termos filhos aparecem no menu suspenso "Pai", onde você deseja criar um novo termo. Quando adiciono um termo cujo pai é um dos termos filhos e atualizo a página, ENTÃO os termos filhos são exibidos.