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.