Add Notification Bubbles to WordPress Custom Post Types Not Working – How to Fix
If you’ve recently tried to add notification bubbles to your WordPress Custom Post Types (CPTs) and noticed they’re not appearing as expected in the WordPress admin menu, you’re not alone. Many developers face this issue while customizing back-end features, especially when trying to create a seamless user experience. Despite following official documentation, notification bubbles—such as those small red indicators showing post counts—can remain mysteriously absent from your CPT menu items. This article breaks down why this happens and how to fix it properly.
Why Notification Bubbles Might Not Work with CPTs
Notification bubbles, or menu badges, are commonly seen on built-in menu items like “Comments” or “Plugins” within the WordPress dashboard. When it comes to CPTs, however, things get a little more complicated. There are several reasons these badges might not appear:
- Incorrect Menu Structure: CPTs often use a custom top-level menu which doesn’t automatically support badge hooks.
- Wrong Hook Usage: Developers might be using an incorrect WordPress action or placing their code at the wrong point in the loading sequence.
- Lack of Count Logic: A bubble requires a count. If the logic isn’t in place to calculate and assign the number of pending items, no badge will show.

How Notification Bubbles Work in WordPress
In WordPress, menu notification bubbles are usually generated using the $menu
global variable inside the admin_menu
action. WordPress modifies the menu array, appending a `` element with a class of update-plugins
or update-count
to show badges automatically. To replicate this behavior with a CPT, you need to hook into the same structure properly.
Steps to Fix Notification Bubbles for Custom Post Types
Follow these fixed, reliable steps to get notification bubbles working on your CPT:
- Hook into
admin_menu
properly:
Make sure your code runs inside the right WordPress hook so it has access to the complete$menu
global.add_action('admin_menu', 'add_cpt_notification_bubble'); function add_cpt_notification_bubble() { global $menu; $pending_count = wp_count_posts('your_custom_post_type')->pending; if ($pending_count > 0) { foreach ($menu as $key => $item) { if ($item[2] == 'edit.php?post_type=your_custom_post_type') { $menu[$key][0] .= ' ' . $pending_count . ''; break; } } } }
- Ensure Correct Count Logic:
Replace'your_custom_post_type'
with your actual CPT slug. This code checks the number of “pending” posts and appends a bubble with the count accordingly. - Use Admin Styles Correctly:
WordPress does not add the necessary styling for badge visibility unless the right class name is used. Ensure you useupdate-plugins
alongsideplugin-count
.
Verify Menu Slug and Position
One overlooked area is the menu slug you register in your register_post_type
function. If you’ve assigned a menu_position
or menu_icon
, the menu array index may shift unexpectedly, causing your loop to miss that menu item.
You can use print_r($menu)
inside the admin_menu
hook to inspect how your CPT appears and confirm the correct menu slug.

Additional Tips for a Clean Implementation
To ensure a seamless user experience, consider the following tips:
- Cache counts using transients if your CPT has thousands of entries to avoid performance hiccups.
- Limit bubble display to users with permissions to manage the posts within that CPT using
current_user_can()
. - Test with different user roles to make sure the bubble shows up appropriately across access levels.
Conclusion
Adding notification bubbles to WordPress CPTs isn’t as plug-and-play as with core menu items, but with the correct logic and hook usage, it’s entirely achievable. By manually inspecting the admin menu structure and appending counts intelligently, you can enhance visibility and improve user workflow without relying on external plugins. Apply the methods above, monitor your CPT’s behavior, and deliver a more intuitive dashboard experience for your users.
Where Should We Send
Your WordPress Deals & Discounts?
Subscribe to Our Newsletter and Get Your First Deal Delivered Instant to Your Email Inbox.