There are five default Post Types readily available to users or internally used by the WordPress installation:
- Post (Post Type: ‘post’)
- Page (Post Type: ‘page’)
- Attachment (Post Type: ‘attachment’)
- Revision (Post Type: ‘revision’)
- Navigation menu (Post Type: ‘nav_menu_item’)
Menu item is custom post type in WP. They are stored in wp_posts table. You can find all of them by using this query:
SELECT * FROM `wp_posts` WHERE post_type = 'nav_menu_item'
Menu by itself is a taxonomy in WP. It means that you can find all menus in wp_terms table, by running following query:
SELECT * FROM wp_terms AS t LEFT JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'nav_menu'
Relations between menus and menu items are stored in wp_term_relationships table. To find all items of specific menu you can use this query:
FROM wp_posts AS p
LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID
LEFT JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id
WHERE p.post_type = 'nav_menu_item'
AND tt.term_id = /*your menu ID*/;