On a few WordPress projects I’ve needed to make use of a taxonomy for organizational/archive purposes that are a bit…out of the ordinary.
In one example a taxonomy term was used to create year based archives – but the taxonomy was assigned (and created) based on a combination of custom fields that were selected.
In another example, the term was used to define the source of the content that was automated to import into WordPress through a cron job.
In both examples the taxonomy terms are critical for the project/site’s basic functionality but, they are also not something a user should be editing or modifying willy-nilly.
As anyone who debugs software knows, sometimes hiding things like this can lead to posts ending up in impossible cases so it’s nice to be able to provide an end-user (or admin, depending on the project) with a back door to be able to view and correctly assign terms.
Enter the hidden_meta_boxes
filter. Using the snippet below, adjust your post type and taxonomy slugs in order to default the meta box to be hidden.
/**
* Always force hiding the year taxonomy metabox.
* This still keeps it available for a user to open through
* screen options - the display state is not persisted once
* they leave the page's session.
*
* @param array $hidden List of hidden metaboxes.
* @param WP_Screen $screen The active admin screen.
* @return array
*/
function tacreative_default_hide_years( $hidden, $screen ) {
$post_type_slug = 'magazine_issue';
$taxonomy_slug = 'calendar_year';
if (
'edit' === $screen->parent_base
&& $post_type_slug === $screen->post_type
) {
$hidden[] = $taxonomy_slug . 'div';
}
return $hidden;
}
add_filter( 'hidden_meta_boxes', 'tacreative_default_hide_years', 10, 2 );
Additional Taxonomy Features
If you’re looking to add a dropdown on the admin page so users can filter by this custom taxonomy check out the article Custom Post Type Filter Admin By Custom Taxonomy