ผ่านฟังก์ชั่น API ฉันต้องการกำหนดเมนูนำทางใหม่เลือกในธีมปัจจุบันจากนั้นแทรกเพจเป็นรายการเมนูสองสามหน้า สิ่งนี้จะต้องทำเช่นในการเปิดใช้งานชุดรูปแบบ
ผ่านกระบวนการ (ย้อนกลับที่เจ็บปวดพอสมควร) ในการทำวิศวกรรมย้อนกลับแทรกและอัพเดทฐานข้อมูลด้วยตนเองหลังจากตั้งค่าเมนูนำทางและรายการต่างๆด้วยตนเองฉันได้ทำขั้นตอนต่อไปนี้ด้วยกันโดยที่ 'footer-nav' เป็นรหัสกระสุนของเมนูนำทาง I ' 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');
}
ดูเหมือนว่าจะใช้งานได้ แต่:
- มันเป็นวิธีที่แข็งแกร่งและสง่างามของการทำมันได้หรือไม่
- ฉันขาดอะไรบางอย่างที่เห็นได้อย่างชัดเจนว่าจะทำสิ่งนี้ทั้งหมดในหนึ่งบรรทัดของโค้ด?