O menu por si só é uma taxonomia no WP. Isso significa que você pode encontrar todos os menus na wp_terms
tabela, executando a seguinte consulta:
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';
O item de menu é um tipo de postagem personalizado no WP. Eles são armazenados na wp_posts
tabela. Você pode encontrar todos eles usando esta consulta:
SELECT *
FROM wp_posts
WHERE post_type = 'nav_menu_item';
As relações entre menus e itens de menu são armazenadas na wp_term_relationships
tabela. Para encontrar todos os itens do menu específico, você pode usar esta consulta:
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*/;
Informações sobre atualmente selecione o menu está localizada na wp_options
tabela como array PHP serializado. Por exemplo, se usarmos o tema TwentyEleven, teremos um registro na wp_options
tabela com option_name
coluna igual a theme_mod_twentyeleven
e option_value
coluna igual a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}
. Aqui você pode ver que o menu term_id
igual a 103 está atualmente selecionado como "primary"
menu.
O princípio chave aqui é que sempre temos registro de opções separadas para cada tema do WP. Essas opções têm a mesma estrutura nome: theme_mods_{your-theme-name}
.
PS: Para alterar o menu atual no painel de administração, basta ir para a página Appearance
» Menus
e selecionar o menu necessário na Theme Locations
caixa meta:
term_id
?