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);
Obviamente es jerárquico. El nivel superior contiene tipos de liberación, es decir, DVD, Blu-ray. El nivel debajo de eso son 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 5 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 es así:
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, aunque los términos se incorporan a la base de datos, no aparecen en la página de taxonomía. A lo sumo, aparecen los términos de nivel superior. 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 desactivar y volver a activar 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 "Principal" donde 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, LUEGO aparecen los términos secundarios.