Привет @jessegavin :
Меню Nav хранятся в комбинации пользовательских типов записей и пользовательских таксономий. Каждое меню сохраняется как термин (например, «О меню» , найденный в wp_terms
) пользовательской таксономии (то есть nav_menu
, найденный в wp_term_taxonomy
.)
Каждый пункт меню Nav хранится в виде поста post_type=='nav_menu_item'
(т. Е. «О фирме» , в wp_posts
котором он находится), а его атрибуты хранятся в виде мета (в wp_postmeta
) поста с meta_key
префиксом _menu_item_*
где _menu_item_menu_item_parent
- идентификатор родительского поста пункта меню Nav вашего элемента меню.
Отношение между меню и пунктами меню хранится в том месте, wp_term_relationships
где оно object_id
относится к $post->ID
пункту меню Nav и $term_relationships->term_taxonomy_id
относится к меню, определенному совместно в wp_term_taxonomy
и wp_terms
.
Я уверен , что это можно было бы подключить как 'wp_update_nav_menu'
и 'wp_update_nav_menu_item'
создать фактическое меню в wp_terms
и параллельный набор отношений в wp_term_taxonomy
и wp_term_relationships
где каждом Nav Пункте меню , который имеет суб-Nav пункты меню также становится его собственная Nav меню.
Вы также хотели бы подключить 'wp_get_nav_menus'
(который я предложил добавить в WP 3.0 на основе некоторой аналогичной работы, которую я выполнял несколько месяцев назад), чтобы гарантировать, что ваши сгенерированные навигационные меню не будут отображаться для манипуляций пользователем в администраторе, в противном случае они Вы бы очень быстро потеряли синхронизацию, и тогда у вас был бы кошмар с данными.
Звучит как забавный и полезный проект, но это немного больше кода и тестирования, чем я могу себе позволить решить сейчас, отчасти потому, что все, что синхронизирует данные, имеет тенденцию быть PITA, когда дело доходит до устранения всех ошибок (и потому что платящие клиенты настаивают на том, чтобы я что-то сделал. :) Но, вооружившись приведенной выше информацией, я довольно мотивированный разработчик плагинов для WordPress, если захочу.
Конечно, теперь вы понимаете, что если вы делаете код, вы обязаны опубликовать его здесь, чтобы мы могли извлечь выгоду из вашей щедрости! :-)