Melalui fungsi API, saya ingin menentukan menu Navigasi baru , memilihnya dalam tema saat ini, dan kemudian menyisipkan beberapa Halaman sebagai item menu. Ini harus dilakukan misalnya pada aktivasi tema.
Melalui proses (yang cukup menyakitkan) dari rekayasa balik database menyisipkan dan memperbarui setelah secara manual mengatur menu Navigasi dan item, saya telah menyatukan langkah-langkah berikut, di mana 'footer-nav' adalah slug ID dari menu Navigasi I ' m membuat:
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');
}
Ini tampaknya berhasil, tetapi:
- apakah ini cara yang kuat dan elegan untuk melakukannya?
- Apakah saya kehilangan sesuatu yang sangat jelas yang akan melakukan semua ini dalam satu baris kode?