API 함수를 통해 새 탐색 메뉴 를 정의 하고 현재 테마에서 해당 메뉴 를 선택한 다음 몇 개의 페이지를 메뉴 항목으로 삽입하려고합니다. 이것은 예를 들어 테마 활성화에서 수행됩니다.
탐색 메뉴 및 항목을 수동으로 설정 한 후 데이터베이스 삽입 및 업데이트의 약간의 역 엔지니어링 리버스 엔지니어링 프로세스를 통해 다음 단계를 구성했습니다. 여기서 'footer-nav'는 탐색 메뉴의 슬러그 ID입니다. m 만들기 :
if (!term_exists('footer-nav', 'nav_menu')) {
$menu = wp_insert_term('Footer nav', 'nav_menu', array('slug' => 'footer-nav'));
// Select this menu in the current theme
update_option('theme_mods_'.get_current_theme(), array("nav_menu_locations" => array("primary" => $menu['term_id'])));
// Insert new page
$page = wp_insert_post(array('post_title' => 'Blog',
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'page'));
// Insert new nav_menu_item
$nav_item = wp_insert_post(array('post_title' => 'News',
'post_content' => '',
'post_status' => 'publish',
'post_type' => 'nav_menu_item'));
add_post_meta($nav_item, '_menu_item_type', 'post_type');
add_post_meta($nav_item, '_menu_item_menu_item_parent', '0');
add_post_meta($nav_item, '_menu_item_object_id', $page);
add_post_meta($nav_item, '_menu_item_object', 'page');
add_post_meta($nav_item, '_menu_item_target', '');
add_post_meta($nav_item, '_menu_item_classes', 'a:1:{i:0;s:0:"";}');
add_post_meta($nav_item, '_menu_item_xfn', '');
add_post_meta($nav_item, '_menu_item_url', '');
wp_set_object_terms($nav_item, 'footer-nav', 'nav_menu');
}
이것은 작동하는 것처럼 보이지만 :
- 강력하고 우아한 방법입니까?
- 한 줄의 코드 로이 모든 것을 할 수있는 확실한 것이 빠져 있습니까?