Hierarchische Taxonomie-Benutzeroberfläche


11

Ich mag die Art und Weise, wie die Taxonomien im Wordpress-Administrator angezeigt werden, nicht und habe mich gefragt, ob jemand weiß, wie man sie am besten einbindet und ändert. Wenn ich derzeit einige Begriffe in meinem Beitrag auswähle, werden diese ausgewählten Begriffe an den Anfang der Liste gesetzt, und die Hierarchie ist unterbrochen, was sie für den Benutzer visuell verwirrend macht.

Bitte sehen Sie sich diese Bilder an, um eine Vorstellung davon zu bekommen, wovon ich spreche

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Ich möchte die Taxonomien genau so anzeigen, wie sie anfänglich angezeigt werden, wobei nur die richtigen Begriffe angekreuzt sind. Gibt es eine Möglichkeit, dies zu tun, ohne den Wordpress-Kern direkt bearbeiten zu müssen? Ich kann keine Hooks sehen, die ich verwenden kann.

Vielen Dank für jede Hilfe, die Sie geben können!

Helen


1
Das passiert bei allen heirarchischen Taxonomien, es ist extrem ärgerlich!
Tom J Nowell

Gute Frage. +1.
Anh Tran

Antworten:



2

Rückverfolgung

Lassen Sie uns zunächst überprüfen, wo dies tatsächlich geschieht:

Die Meta-Box wird hinzugefügt post.phpund post-new.phpBildschirme.

# inside ~/wp-admin/edit-form-advanced.php
// TAGS:
if ( !is_taxonomy_hierarchical($tax_name) )
    add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));
// CATEGORIES:
else
    add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));

Dann verschieben wir eine Datei tiefer in den Kern, um zur Definition / zum Meta-Box-Rückruf zu gelangen

// inside ~/wp-admin/meta-boxes.php
function post_categories_meta_box( $post, $box )

Die categorychecklistRegisterkarte enthält die Liste. Innerhalb der divhaben wir eine Funktion namens wp_popular_terms_checklist($taxonomy);.

# inside ~/wp-admin/includes/template.php
<li id="<?php echo $id; ?>" class="popular-category">
<label class="selectit">
<input id="in-<?php echo $id; ?>" type="checkbox" <?php echo $checked; ?> value="<?php echo (int) $term->term_id; ?>" <?php echo $disabled ?>/>
    <?php echo esc_html( apply_filters( 'the_category', $term->name ) ); ?>
</label>
</li>

" Fazit:

Dies bedeutet, dass wir keine echte Chance haben, dies auf einfacher serverseitiger Ebene mit WP-Filtern / Hooks und PHP abzufangen.

So etwas tun wie ...

add_filter( 'wp_get_object_terms', '__return_empty_array', 20, 4 );

... würde einfach die Kontrollkästchen vollständig deaktivieren.

wird aktualisiert, wenn ich mehr Informationen habe und (vielleicht eine Lösung)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.