How to exclude draft pages from navigation menu in WordPress
To hide draft pages from your navigation menu, insert this code on your plugin:
/* * Exclude draft pages from the menu * */ add_filter ('wp_nav_menu_objects', 'wpster_exclude_draft_pages_from_menu', 10, 2); function wpster_exclude_draft_pages_from_menu ($items, $args) { foreach ($items as $ix => $obj) { if (!is_user_logged_in () && 'draft' == get_post_status ($obj->object_id)) { unset ($items[$ix]); } } return $items; } ?>
Please note that connected users will still be able to see these pages in the navigation menu.