Why half my menu items just disappeared?

There is a well known limitation in WordPress, because of max_input_vars that was introduced in PHP 5.3.9.

For security reasons, PHP limits the maximum numbers of POST variables you can submit.

Specifically for a WordPress Menu

Normally if your server has default settings the max_input_vars value is 1000 so approximately only the first 80 menu items are sent to the server, due to the new POST variable limit.

If you don't really need many menu items then you don't have to do any additional settings. Otherwise you need to properly configure your php settings and change the maximum number of input vars to a larger value e.g: 2000.

In case the Header Menu looks scrabbled, the only reason is that the Header Menu is unset in Theme Locations.

You can set it again under Appearance - Menus - Menu Settings

  1. Check Header Menu
  2. Save menu

Additional Info

If you need additional information then you can read the following article: