When category archive pages automatically highlight your blog menu item in WordPress, it’s because WordPress typically
treats these as part of the blog hierarchy. Here are several methods to prevent this behavior:
Method 1: Use CSS to Remove Active State
.category .current-menu-item, .category .current_page_item { background: none !important; color: inherit !important; /* Add any other styles to reset the active state */ }
Method 2: Modify Menu Walker Class
Add this to your theme’s functions.php
:
function adjust_category_menu_item_classes($items, $args) { if (is_category()) { foreach ($items as $item) { $item->classes = array_diff($item->classes, array('current-menu-item', 'current_page_item')); } } return $items; } add_filter('wp_nav_menu_objects', 'adjust_category_menu_item_classes', 10, 2);
Method 3: Use Conditional Menu Plugin
Install a plugin like “If Menu” to conditionally control menu items based on:
- Page type (archive, category, etc.)
- Specific categories
- Other conditions
Method 4: Custom Nav Menu Walker
Create a custom walker class that checks is_category()
and removes active classes accordingly.
Method 5: JavaScript Solution
jQuery(document).ready(function($) { if ($('body').hasClass('category')) { $('.current-menu-item, .current_page_item').removeClass('current-menu-item current_page_item'); } });
Choose the method that best fits your technical comfort level and theme structure. The CSS method is simplest but may
not work in all cases, while the PHP solutions are more robust.