Thông qua các chức năng API, tôi muốn xác định menu Điều hướng mới , chọn nó trong chủ đề hiện tại và sau đó chèn một vài Trang làm các mục menu. Điều này được thực hiện ví dụ trên một kích hoạt chủ đề.
Thông qua quy trình (đau vừa phải) của kỹ thuật đảo ngược, cơ sở dữ liệu chèn và cập nhật sau khi thiết lập thủ công menu Điều hướng và các mục, tôi đã thực hiện các bước sau đây, trong đó 'footer-nav' là ID sên của menu Điều hướng I ' m đang tạo:
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');
}
Điều này có vẻ hiệu quả, nhưng:
- nó là một cách mạnh mẽ và thanh lịch để làm điều đó?
- Tôi có thiếu một cái gì đó hoàn toàn rõ ràng sẽ làm tất cả điều này trong một dòng mã không?