Realmente tengo algunos problemas con la inserción de términos. Aquí está mi escenario: Tengo una taxonomía llamada 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);
Es obviamente jerárquico. El nivel superior contiene tipos de versión, por ejemplo, DVD, blu-ray. El nivel bajo que son las regiones es decir. Región 1, Región 2, etc. Entonces, la Jerarquía que quiero es: DVD - Región 0 --Región 1 --Región 2 --Región 3 --Región 4 --Región 5 --Región 6 Blu-Ray - Región A - Región B - Región C
Creé una función llamada insert_term en mi clase para verificar si existe un término y luego insertarlo si no existe:
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;
}
}
Y luego llamo a dicha función para insertar los términos:
$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']));
El problema que tengo es que a pesar de que los términos se ingresan en la base de datos, no aparecen en la página de taxonomía. A lo sumo, los términos de nivel superior aparecen. Tengo que probar varias cosas hasta que obligue a WordPress a reconocer los términos de subnivel. ¿Alguien se ha topado con esto o puede recomendar una mejor manera?
EDITAR:
Noté algo más: intenté eliminar los términos de la base de datos y luego desactivé y reactivé el complemento que declara los términos. Los dos términos principales se muestran en la página de términos, pero los términos secundarios no. Los términos secundarios se muestran en el menú desplegable "Padres" en el que desea crear un nuevo término. Cuando agrego un término cuyo padre es uno de los términos secundarios y actualizo la página, ENTONCES aparecen los términos secundarios.