Cześć @jessegavin :
Menu Nav są przechowywane w kombinacji niestandardowych typów postów i niestandardowych systematyk. Każde menu jest przechowywane jako termin (tj. „Informacje o menu” , znaleziony w wp_terms
) w niestandardowej taksonomii (tj. nav_menu
Znaleziony w wp_term_taxonomy
.)
Każdy element menu Nav jest przechowywany jako post post_type=='nav_menu_item'
(tj. „O firmie” , znaleziono w wp_posts
), a jego atrybuty są przechowywane jako meta post (in wp_postmeta
) z meta_key
prefiksem _menu_item_*
gdzie _menu_item_menu_item_parent
jest identyfikator nadrzędnego elementu menu Nav post.
Zależność między menu i elementami menu jest przechowywana wp_term_relationships
tam, gdzie object_id
odnosi się $post->ID
do pozycji menu nawigacji i $term_relationships->term_taxonomy_id
odnosi się do menu zdefiniowanego zbiorczo w wp_term_taxonomy
i wp_terms
.
Jestem prawie pewien, że byłoby to możliwe, aby zaczepić zarówno 'wp_update_nav_menu'
i 'wp_update_nav_menu_item'
stworzyć menu w rzeczywistych wp_terms
i równoległym układzie stosunków w wp_term_taxonomy
i wp_term_relationships
gdzie każdy Nav elementu menu, który ma sub-Nav elementy Menu również staje się swoją własną Nav Menu.
Chciałbyś także przechwycić 'wp_get_nav_menus'
(który sugerowałem dodanie do WP 3.0 w oparciu o podobną pracę, którą wykonywałem kilka miesięcy temu), aby upewnić się, że wygenerowane menu Nav nie są wyświetlane do manipulacji przez użytkownika w adminie, w przeciwnym razie naprawdę szybko zsynchronizowałeś się, a wtedy miałbyś koszmar danych.
Brzmi jak fajny i użyteczny projekt, ale jest to trochę więcej kodu i testów, na które nie mogę sobie teraz pozwolić częściowo, ponieważ wszystko, co synchronizuje dane, zwykle jest PITA, jeśli chodzi o usuwanie wszystkich błędów (i ponieważ klienci płacący naciskają na mnie, aby załatwić sprawę :) Ale uzbrojony w powyższe informacje jestem dość zmotywowanym deweloperem wtyczek WordPress, który mógłby to napisać, gdyby chcieli.
Oczywiście teraz zdajesz sobie sprawę, że jeśli go kodujesz, masz obowiązek opublikować go tutaj, abyśmy wszyscy mogli skorzystać z Twojej hojności! :-)