Hi @jessegavin :
Navigationsmenüs werden in einer Kombination aus benutzerdefinierten Beitragstypen und benutzerdefinierten Taxonomien gespeichert. Jedes Menü wird als ein Begriff (dh "About Menu" , gefunden in wp_terms
) einer benutzerdefinierten Taxonomie (dh nav_menu
gefunden in wp_term_taxonomy
.) Gespeichert .
Jeder Nav-Menüpunkt wird als Beitrag von post_type=='nav_menu_item'
(dh "Über die Firma" , gefunden in wp_posts
) mit seinen Attributen als Beitrags-Meta (in wp_postmeta
) gespeichert, wobei das meta_key
Präfix verwendet wird, _menu_item_*
wo _menu_item_menu_item_parent
die ID des übergeordneten Nav-Menüpunkt-Beitrags Ihres Menüpunkts ist.
Die Beziehung zwischen Menüs und Menüelementen ist in gespeichert, wp_term_relationships
wobei sie object_id
sich auf das $post->ID
für das Navigationsmenüelement und $term_relationships->term_taxonomy_id
auf das in wp_term_taxonomy
und gemeinsam definierte Menü bezieht wp_terms
.
Ich bin mir ziemlich sicher , dass es möglich wäre , haken beide 'wp_update_nav_menu'
und 'wp_update_nav_menu_item'
aktuelle Menüs in erstellen wp_terms
und einen parallelen Satz von Beziehungen in wp_term_taxonomy
und wp_term_relationships
wo jeden Nav Menüpunkt, der auch Unter Nav Menüpunkte hat wird es eigenes Nav - Menü.
Sie sollten auch einen Hook 'wp_get_nav_menus'
(den ich aufgrund einer ähnlichen Arbeit, die ich vor einigen Monaten durchgeführt habe, zu WP 3.0 hinzugefügt habe) verwenden, um sicherzustellen, dass Ihre generierten Navigationsmenüs nicht für den Benutzer im Administrator zur Manipulation angezeigt werden, andernfalls würde sehr schnell aus der Synchronisation geraten und du hättest einen Daten-Albtraum auf der Hand.
Klingt nach einem unterhaltsamen und nützlichen Projekt, aber es ist ein bisschen mehr Code und Testen, als ich es mir leisten kann, zum gegenwärtigen Zeitpunkt in Angriff zu nehmen, da alles, was Daten synchronisiert, zum PITA wird, wenn es darum geht, alle Fehler auszubügeln (und weil Zahlende Kunden fordern mich auf, die Dinge zu erledigen. :) Aber mit den obigen Informationen bewaffnet, bin ich ein ziemlich motivierter WordPress-Plug-in-Entwickler, der sie codieren könnte, wenn er wollte.
Natürlich stellen Sie jetzt fest, dass Sie, wenn Sie es codieren, verpflichtet sind, es hierher zurückzusenden, damit wir alle von Ihrer Größe profitieren können! :-)