Wordpress-Standardmenü in der Datenbank

18

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.

Hiren Rathod
quelle

Antworten:

46

Menü für sich ist eine Taxonomie in WP. Dies bedeutet, dass Sie alle Menüs in der wp_termsTabelle finden können, 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 sind in der wp_postsTabelle 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 einer wp_term_relationshipsTabelle 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ü finden Sie in der wp_optionsTabelle als serialisiertes PHP-Array. Wenn wir zum Beispiel das TwentyEleven-Thema verwenden, haben wir einen Datensatz in der wp_optionsTabelle mit option_nameSpalte gleich theme_mod_twentyelevenund option_valueSpalte gleich ...;s:18:"nav_menu_locations";a:1:{s:7:"primary";i:103;}}. Hier sehen Sie, dass term_idaktuell ein Menü mit 103 als "primary"Menü ausgewählt ist .

Das Schlüsselprinzip hierbei ist, dass wir für jedes WP-Thema immer einen eigenen Optionsdatensatz haben. Diese Optionen haben den gleichen Namen Struktur: theme_mods_{your-theme-name}.

PS: Um das aktuelle Menü im Admin-Bereich zu ändern, gehen Sie einfach zur Appearance» MenusSeite und wählen Sie das gewünschte Menü in der Theme LocationsMeta-Box aus:

Bildbeschreibung hier eingeben

Eugene Manuilov
quelle
Vielen Dank für Ihre Antwort, aber ich möchte wissen, wo es das Menü speichert, das Standard ist (wird jetzt im Front-End angezeigt).
Hiren Rathod
@ HirenRathod Ich habe meine Antwort aktualisiert
Eugene Manuilov
Ja, ich habe die Antwort bekommen. Ich verwende ein Hypershot-Thema und behalte das Grundmenü als Testmenü. Es speichert wie folgt: a: 2: {i: 0; b: 0; s: 18: "nav_menu_locations"; a: 2: {s: 11: "header-menu"; i: 27; s: 11: "footer -menu "; i: 0;}} Hier bedeutet i: 27, dass 27 die term_id von wp_terms ist. Thanks @ eugene-manuilov :)
Hiren Rathod
Wie würden Sie die Menüpunkte (Seiten / Beiträge / Links) für eine bestimmte auswählen term_id?
Xeoncross