The disable_categories_dropdown WordPress PHP filter allows you to control the visibility of the ‘Categories’ drop-down in the post list table.
Usage
add_filter( 'disable_categories_dropdown', 'your_custom_function', 10, 2 ); function your_custom_function( $disable, $post_type ) { // your custom code here return $disable; }
Parameters
$disable
(bool) – Whether to disable the categories drop-down. Default false.$post_type
(string) – Post type slug.
More information
See WordPress Developer Resources: disable_categories_dropdown
Examples
Disable categories drop-down for all post types
Disables the categories drop-down for all post types.
add_filter( 'disable_categories_dropdown', '__return_true' );
Disable categories drop-down for a specific post type
Disables the categories drop-down for a custom post type called ‘product’.
add_filter( 'disable_categories_dropdown', 'disable_dropdown_for_product', 10, 2 ); function disable_dropdown_for_product( $disable, $post_type ) { if ( 'product' === $post_type ) { return true; } return $disable; }
Enable categories drop-down for a specific post type
Enables the categories drop-down for a custom post type called ‘event’ while disabling it for other post types.
add_filter( 'disable_categories_dropdown', 'enable_dropdown_for_event', 10, 2 ); function enable_dropdown_for_event( $disable, $post_type ) { if ( 'event' === $post_type ) { return false; } return true; }
Disable categories drop-down for multiple post types
Disables the categories drop-down for custom post types ‘product’ and ‘review’.
add_filter( 'disable_categories_dropdown', 'disable_dropdown_for_multiple', 10, 2 ); function disable_dropdown_for_multiple( $disable, $post_type ) { $disabled_post_types = array( 'product', 'review' ); if ( in_array( $post_type, $disabled_post_types ) ) { return true; } return $disable; }
Conditionally disable categories drop-down
Disables the categories drop-down based on user role.
add_filter( 'disable_categories_dropdown', 'disable_dropdown_for_author', 10, 2 ); function disable_dropdown_for_author( $disable, $post_type ) { $current_user = wp_get_current_user(); if ( in_array( 'author', $current_user->roles ) ) { return true; } return $disable; }