Hide unpublished pages in your custom menus.
As of April 2026, Hide Drafts in Menus is a WordPress menus plugin with 1.0K+ active installations and a 5/5 rating from 9 reviews. It has been downloaded 15K+ times in total. Requires WordPress 4.0+ and PHP false+. Available on WordPress.org since 2016. Last updated 1 year ago — may have compatibility concerns. Downloads are up 10% this week. Top alternative: User Menus – Nav Menu Visibility.
If you unpublish a page or post, it still appears in your custom menus. This plugin automatically prevents pages/posts set to “draft” or “pending review” from appearing in custom menus on the site, while keeping their place in the menu structure. When they’re published, they’ll appear in the menu automatically.
This plugin also modifies the custom menu editing screen to clearly indicate the unpublished status of items in the menu.
NOTE: We are aware of a limitation in the plugin, that a page/post must be published to appear in the list of items you can select to add to the menu. We are working on a solution. In the meantime, the workaround is to temporarily publish the page/post, add it to the menu, and then set it back to “draft”.
One of those plugins you can’t believe hasn’t been rolled into core by now.
I’ve been using it as one of my standard install plugins and it’s very helpful for rolling out sites with multiple draft pages etc.
Has worked perfectly for years. Had a slight problem this last week but the developer fixed it within 12 hours of me posting about it. Can’t ask for more than that.
It’s hard to believe that this functionality is not part of WordPress core, since it simply does not make sense to show a menu item which links to an unpublished page.
Does what it says, I could easily extend it to hide also private posts.
This Plugin makes exactly what i’m looking for. But it’s special, that this plugin is necessary, because that should be a part of the stock WP.
and it’s very easy, install, run, done!
Thanks so much – i had a whole pile of prebuilt pages I added in my new theme which threw out my menu – installed this and – GONE – thanks so much
| WordPress | 4.0+ requiredTested up to 6.5.8 |
| PHP | false+ required |
Plugin data sourced from WordPress.org. Analysis and metrics by PluginSift.