Menu padrão do Wordpress no banco de dados

18

Existem 3 menus no meu wordpress (3.5) agora.

  • Menu principal (padrão do wp)
  • Menu rodapé (padrão do wp)
  • Menu de teste

Agora eu mantive o menu de teste como padrão.

Onde o Wordpress armazena essa coisa?

Eu quero saber onde o wordpress armazena sobre o menu atual que está sendo exibido no front-end.

Hiren Rathod
fonte

Respostas:

46

O menu por si só é uma taxonomia no WP. Isso significa que você pode encontrar todos os menus na wp_termstabela, 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_poststabela. 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_relationshipstabela. 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_optionstabela como array PHP serializado. Por exemplo, se usarmos o tema TwentyEleven, teremos um registro na wp_optionstabela com option_namecoluna igual a theme_mod_twentyelevene option_valuecoluna igual a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Aqui você pode ver que o menu term_idigual 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» Menuse selecionar o menu necessário na Theme Locationscaixa meta:

insira a descrição da imagem aqui

Eugene Manuilov
fonte
Obrigado pela sua resposta, mas quero saber onde ele armazena o menu que é padrão (mostrando para o front end) agora.
Hiren Rathod
@HirenRathod Atualizei minha resposta
Eugene Manuilov
Sim, eu recebi a resposta. Estou usando o tema hypershot e mantive o menu de primery como menu de teste. Ele armazena assim a: 2: {i: 0; b: 0; s: 18: "nav_menu_locations"; a: 2: {s: 11: "menu de cabeçalho"; i: 27; s: 11: "rodapé -menu "; i: 0;}} Aqui i: 27 significa 27 é o term_id de wp_terms. Obrigado @ eugene-manuilov :)
Hiren Rathod
Como você selecionaria os itens de menu (páginas / posts / links) para um determinado term_id?
Xeoncross