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.

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.