UI taxonomie hiérarchique

11

Je n’aime pas la façon dont les taxonomies sont affichées dans l’administrateur de 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

Je souhaite afficher les taxonomies exactement comme elles ont été affichées au départ, avec uniquement les termes corrects cochés. Y a-t-il moyen de le faire sans avoir à éditer le noyau Wordpress directement, je ne vois pas les crochets que je pourrais utiliser.

Merci pour toute aide que vous pouvez apporter!

Helen

    
posée FlimFlam 05.09.2012 - 18:42

2 réponses

7

Il existe un plugin de Scribu appelé Arbre de liste de contrôle de catégories qui désactive cette" fonctionnalité ".

    
réponse donnée Emzo 11.09.2012 - 20:57
2

Traçage

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

La méta-boîte est ajoutée aux é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 / la 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 le 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 les filtres / hooks WP et PHP.

Faire quelque chose comme ...

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

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

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

    
réponse donnée kaiser 05.09.2012 - 22:09

Lire d'autres questions sur les étiquettes