Ich habe wirklich ein paar Probleme beim Einfügen von Begriffen. Hier ist mein Szenario: Ich habe eine Taxonomie namens 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 ist offensichtlich hierchisch. Die oberste Ebene enthält Release-Typen wie DVD, Blu-ray. Die Ebene darunter sind Regionen, dh. Region 1, Region 2 usw. Die von mir gewünschte Hierarchie lautet also: DVD --Region 0 --Region 1 --Region 2 --Region 3 --Region 4 --Region 5 --Region 6 Blu-Ray - -Region A --Region B --Region C
Ich habe eine Funktion namens insert_term in meiner Klasse erstellt, um zu prüfen, ob ein Begriff existiert. Fügen Sie ihn dann ein, wenn dies nicht der Fall ist:
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;
}
}
Und dann rufe ich die Funktion auf, um die Begriffe einzufügen:
$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']));
Das Problem, das ich habe, ist, dass die Begriffe, obwohl sie in die Datenbank eingegeben werden, nicht auf der Taxonomieseite angezeigt werden. Es werden höchstens die Begriffe der obersten Ebene angezeigt. Ich muss verschiedene Dinge ausprobieren, bis WordPress dadurch gezwungen wird, die Begriffe auf untergeordneter Ebene zu erkennen. Hat jemand darauf gestoßen oder kann man einen besseren Weg empfehlen?
BEARBEITEN: Noch etwas bemerkt: Ich habe versucht, die Begriffe aus der Datenbank zu löschen und dann das Plugin zu deaktivieren und wieder zu aktivieren, das die Begriffe deklariert. Die beiden übergeordneten Begriffe werden auf der Begriffsseite angezeigt, die untergeordneten Begriffe jedoch nicht. Die untergeordneten Begriffe werden im Dropdown-Menü "Übergeordnet" angezeigt, in dem Sie einen neuen Begriff erstellen möchten. Wenn ich einen Begriff hinzufüge, dessen Elternteil einer der untergeordneten Begriffe ist, und die Seite aktualisiere, werden DANN die untergeordneten Begriffe angezeigt.