Skip to content

Instantly share code, notes, and snippets.

@chillbits-legacy
Created November 18, 2016 07:31
Show Gist options
  • Select an option

  • Save chillbits-legacy/8991f70fc3f1b151fb75ea3d93eaf45d to your computer and use it in GitHub Desktop.

Select an option

Save chillbits-legacy/8991f70fc3f1b151fb75ea3d93eaf45d to your computer and use it in GitHub Desktop.
How menu stored in database
/*
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';
/*
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';
/*
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:
*/
SELECT p.*
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*/;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment