web-dev-qa-db-fra.com

Taxonomie hiérarchique UI

Je n'aime pas la façon dont les taxonomies sont affichées dans l'administrateur Wordpress et je me demandais si quelqu'un connaissait le meilleur moyen de le changer et de le changer. Actuellement, si je sélectionne des termes dans mon message, ces termes sélectionnés apparaissent en haut de la liste et la hiérarchie est rompue, ce qui crée une confusion visuelle pour l'utilisateur.

S'il vous plaît voir ces images pour une idée de ce que je parle

enter image description hereenter image description here

Je veux afficher les taxonomies exactement comment elles sont affichées initialement avec les termes corrects cochés. Y a-t-il un moyen de faire cela sans avoir à éditer le noyau Wordpress directement, je ne vois pas les crochets que je pourrais utiliser.

Merci pour toute aide que vous pouvez donner!

Helen

11
FlimFlam

Il y a un plugin de Scribu appelé Arbre de liste de catégories qui désactive cette "fonctionnalité".

7
Emzo

La trace

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

La méta-boîte est ajoutée sur les écrans post.php et post-new.php.

# 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 obtenir le rappel de la définition/méta-boîte

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

L'onglet categorychecklist est celui qui contient la liste. Dans la div, nous avons 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 une réelle chance d'intercepter cela au niveau du serveur ordinaire avec WP filters/hooks et PHP.

Faire quelque chose comme ...

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

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

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

2
kaiser