it-swarm.com.de

Wordpress-Standardmenü in der Datenbank

Es gibt 3 Menüs in meinem WordPress (3.5) jetzt.

  • Hauptmenü (Standard von wp)
  • Fußzeilenmenü (Standard von wp)
  • Testmenü

Jetzt habe ich das Testmenü als Standard beibehalten.

Wo speichert Wordpress dieses Ding?

Ich möchte wissen, wo WordPress Informationen zum aktuellen Menü speichert, das im Frontend angezeigt wird.

17
Hiren Rathod

Menü für sich ist eine Taxonomie in WP. Dies bedeutet, dass Sie alle Menüs in der Tabelle wp_terms finden, indem Sie die folgende Abfrage ausführen:

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';

Der Menüpunkt ist ein benutzerdefinierter Beitragstyp in WP. Sie werden in der Tabelle wp_posts gespeichert. Sie können alle von ihnen mit dieser Abfrage finden:

SELECT * 
  FROM wp_posts 
 WHERE post_type = 'nav_menu_item';

Die Beziehungen zwischen Menüs und Menüelementen werden in der Tabelle wp_term_relationships gespeichert. Um alle Elemente eines bestimmten Menüs zu finden, können Sie diese Abfrage verwenden:

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*/;

Informationen zum aktuell ausgewählten Menü befinden sich in der Tabelle wp_options als serialisiertes PHP-Array. Wenn wir zum Beispiel das TwentyEleven-Thema verwenden, haben wir einen Datensatz in der wp_options-Tabelle mit einer option_name-Spalte, die theme_mod_twentyeleven entspricht, und einer option_value-Spalte, die ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}} entspricht. Hier sehen Sie, dass das Menü mit term_id gleich 103 derzeit als "primary"-Menü ausgewählt ist.

Das Schlüsselprinzip hierbei ist, dass wir für jedes WP Thema immer separate Optionsdatensätze haben. Solche Optionen haben die gleiche Namensstruktur: theme_mods_{your-theme-name}.

P.S .: Um das aktuelle Menü im Admin-Bereich zu ändern, gehen Sie einfach zur Seite Appearance "Menus und wählen Sie das gewünschte Menü in der Theme Locations Meta-Box aus:

enter image description here

43
Eugene Manuilov