Wordpress menu padrão no banco de dados

16

Agora há 3 menus no meu wordpress (3.5).

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

Agora mantive o menu de teste como padrão.

Onde o Wordpress armazena essa coisa?

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

    
por Hiren Rathod 05.01.2013 / 12:40

1 resposta

40

Menu por si só é uma taxonomia em WP. Isso significa que você pode encontrar todos os menus em wp_terms table, 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 tabela wp_posts . 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 tabela wp_term_relationships . 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*/;

As informações sobre o menu atualmente selecionado estão localizadas em wp_options table como array PHP serializado. Por exemplo, se usarmos o tema TwentyEleven, teremos um registro em wp_options table com option_name column igual a theme_mod_twentyeleven e option_value column igual a ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}} . Aqui você pode ver que o menu com term_id é igual a 103 está atualmente selecionado como "primary" menu.

O princípio chave aqui é que sempre temos registros de opções separadas para cada tema do WP. Essas opções têm a mesma estrutura de nome: theme_mods_{your-theme-name} .

P.S .: Para alterar o menu atual no painel de administração, vá até a página Appearance » Menus e selecione o menu que você precisa em Theme Locations meta box:

    
por Eugene Manuilov 05.01.2013 / 12:56