WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I don't like the way the taxonomies are displayed within the Wordpress admin and was wondering if anyone knew the best way to hook in and change it. Currently if I select some terms within my post those selected terms go to the top of the list and the hierarchy is broken making it visually confusing for the user.

Please see these images for an idea of what I'm talking about

enter image description here enter image description here

I want to display the taxonomies exactly how they are displayed initially with just the correct terms ticked. Is there a way of doing this without having to edit the Wordpress core directly, I can't see any hooks for me to use.

Thank you for any help you can give!


share|improve this question
That happens with all heirarchical taxonomies, it's extremely annoying! – Tom J Nowell Sep 5 '12 at 16:49
Nice question. +1. – Rilwis Sep 5 '12 at 17:10
up vote 6 down vote accepted

There is a plugin by Scribu called Category Checklist Tree that disables this "feature".

share|improve this answer
Brilliant, this looks like exactly the solution I needed! – FlimFlam Dec 11 '12 at 15:56


Let's first check where this actually happens:

The meta box gets added on post.php and post-new.php screens.

# 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 ));
    add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', null, 'side', 'core', array( 'taxonomy' => $tax_name ));

Then we move one file deeper into core to get to the definition/the meta box callback

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

The categorychecklist tab is the one that holds the list. Inside the div, we got a function named 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 ) ); ?>

» Conclusion:

This means, that we ain't got a real chance to intercept this on plain server side level with WP filters/hooks and PHP.

Doing something like...

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

... would simply disable the checked boxes completely.

will update if I got more information and (maybe a solution)

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.