Hide Drafts in Menus


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”.


  1. Upload the plugin files to the /wp-content/plugins/ directory.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. There’s no step 3!


Muzigo 15, 2024
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.
Mukutulansanja 17, 2024
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.
Ogwomwenda (Mutunda) 21, 2023
Does what it says, I could easily extend it to hide also private posts.
Ogwekkuminebiri (Ntenvu) 29, 2020
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!
Kafuumuulampawu 16, 2019
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
Mugulansigo 30, 2019
It works prefectly without any configuration. Install it, activate it, done. Thanks to the developer. 🙂
Read all 9 reviews

Contributors & Developers

“Hide Drafts in Menus” is open source software. The following people have contributed to this plugin.


Translate “Hide Drafts in Menus” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


1.5.1 – 2024.05.14

  • Fixed an issue that would cause categories to be hidden. Added a check to ensure that the logic for hiding menu items only applies to items that are a post type (e.g. post, page, custom post type), not taxonomies or other types of objects.
  • Changed CSS styling for hidden items on the admin Menus page to match the default WordPress styling for deleted items.
  • Bumped “tested up to” to 6.5.3.

1.5.0 – 2023.11.01

  • Changed SQL query to simply look for all posts that are not set to a status of publish, rather than the previous check for a few specific status values.
  • Removed now-redundant post status text on menu editing screen (WordPress now displays the status rather than the post type for non-published menu items) and changed visual appearance to a light red background and partial opacity.

1.4.1 – 2023.07.23

  • Fixed bug that prevented draft page CSS from being applied for menus that are not assigned to a theme menu location.
  • Updated “tested up to” to 6.3.


  • Added global $r34hdm_results variable to eliminate duplicate queries, resulting in a slight performance increase.
  • Updated “tested up to” to 5.8.1.


  • Fixed bug that would return a PHP warning if the menu is empty. In some cases this may have been breaking the page preview in the Customizer.
  • Updated “tested up to” to 5.3.


  • Added rekey array of menu items after removing hidden items.
  • Added wp_nav_menu_objects action.


  • Added ‘future’ status to pages hidden in menus.

  • Fixed database error message that occurred when there were no unpublished items.


  • Added ‘trash’ status to pages hidden in menus.


  • Fixed issues that would trigger PHP notices on Appearance > Menus page.

  • Tested with WordPress 4.9.5.

  • Updated “Tested up to” to 4.7.
  • Added note about pages needing to be published temporarily to appear in the list of options.


Initial release in WordPress Plugin Directory.