Interface utilisateur de taxonomie hiérarchique

11

Je n'aime pas la façon dont les taxonomies sont affichées dans l'administrateur Wordpress et je me demandais si quelqu'un savait la meilleure façon de s'y connecter et de la changer. Actuellement, si je sélectionne certains termes dans mon message, ces termes sélectionnés vont en haut de la liste et la hiérarchie est brisée, ce qui rend la vue visuellement déroutante pour l'utilisateur.

Veuillez voir ces images pour avoir une idée de ce dont je parle

entrez la description de l'image ici entrez la description de l'image ici

Je veux afficher les taxonomies exactement comme elles sont affichées initialement avec juste les termes corrects cochés. Existe-t-il un moyen de le faire sans avoir à modifier directement le noyau Wordpress, je ne vois aucun crochet à utiliser.

Merci pour toute aide que vous pouvez apporter!

Hélène

FlimFlam
la source
1
Cela arrive avec toutes les taxonomies héritières, c'est extrêmement ennuyeux!
Tom J Nowell
Bonne question. +1.
Anh Tran

Réponses:

7

Il y a un plugin par Scribu appelé Category Checklist Tree qui désactive cette "fonctionnalité".

Emzo
la source
Brillant, cela ressemble exactement à la solution dont j'avais besoin!
FlimFlam
2

Backtrace

Voyons d'abord où cela se produit réellement:

La boîte de méta est ajouté sur post.phpet post-new.phpécrans.

# 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 ));

Ensuite, nous déplaçons un fichier plus profondément dans le noyau pour arriver à la définition / le rappel de la meta box

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

L' categorychecklistonglet est celui qui contient la liste. À l'intérieur du div, nous avons obtenu une fonction nommée 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>

" Conclusion:

Cela signifie que nous n'avons pas vraiment la possibilité d'intercepter cela au niveau du serveur avec des filtres / crochets WP et PHP.

Faire quelque chose comme ...

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

... désactiverait simplement les cases cochées.

mettra à jour si j'ai plus d'informations et (peut-être une solution)

kaiser
la source