J'ai vraiment quelques problèmes avec l'insertion de termes. Voici mon scénario: j'ai une taxonomie appelée 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);
C'est évidemment hiérarchique. Le niveau supérieur contient les types de version ieDVD, blu-ray. Le niveau sous qui sont les régions à savoir. Région 1, Région 2, etc. Donc, la hiérarchie que je veux est: DVD - Région 0 - Région 1 - Région 2 - Région 3 - Région 4 - Région 5 - Région 6 Blu-Ray - -Région A --Région B --Région C
J'ai créé une fonction appelée insert_term dans ma classe pour vérifier si un terme existe puis l'insérer si ce n'est pas le cas:
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;
}
}
Et puis j'appelle ladite fonction pour insérer les termes:
$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']));
Le problème que j'ai, c'est que même si les termes sont entrés dans la base de données, ils n'apparaissent pas sur la page de taxonomie. Tout au plus, les termes de premier niveau apparaissent. Je dois essayer diverses choses jusqu'à ce qu'il force WordPress à reconnaître les termes de sous-niveau. Quelqu'un at-il rencontré cela ou peut-il recommander une meilleure façon?
EDIT: J'ai remarqué autre chose: j'ai essayé de supprimer les termes de la base de données, puis de désactiver et de réactiver le plugin qui déclare les termes. Les deux termes parent apparaissent dans la page des termes, mais pas les termes enfants. Les termes enfants apparaissent dans le menu déroulant "Parent" où vous souhaitez créer un nouveau terme. Lorsque j'ajoute un terme dont le parent est l'un des termes enfants et actualise la page, ALORS les termes enfants s'affichent.