2016-01-14 97 views
1

在我的第一個插件上工作。它有一個註冊激活掛鉤,這樣當插件被激活時,它會將一個導航項添加到某個菜單。當我停用插件時,我想要刪除此鏈接。如果wp_update_nav_menu_item允許你將一個項目添加到導航菜單,那麼這個函數的完全相反是什麼?如何從WordPress導航菜單中刪除單個項目?

function add_frontend_menu_link(){ 

    if(wp_get_nav_menu_object('Main Navigation')){ 

     $menu = wp_get_nav_menu_object('Main Navigation'); 

     wp_update_nav_menu_item($menu->term_id, 0, array(
      'menu-item-title' => __('Menu'), 
      'menu-item-classes' => 'home', 
      'menu-item-url' => home_url('/menu'), 
      'menu-item-status' => 'publish')); 

     $menu_page = array(
      'post_title' => 'Our Menus', 
      'post_name' => 'menu', 
      'post_content' => 'Choose from the menus below to find out what we serve and when we serve it.', 
      'post_status' => 'publish', 
      'post_author' => 1, 
      'post_type' => 'page', 

     ); 

     wp_insert_post($menu_page); 

    } 

} 

register_activation_hook(__FILE__, 'add_frontend_menu_link'); 

function remove_frontend_menu_link(){ 

    //What should go here? 

} 

register_deactivation_hook(__FILE__, 'remove_frontend_menu_link'); 

如果有一種方法來檢索所創建的菜單項的ID,我可以存儲在該插件的選項,然後調用它的失活鉤和刪除由該ID的帖子。

+0

你試過['remove_menu_page()'](https://codex.wordpress.org/Function_Reference/remove_menu_page)嗎? –

+0

這不僅適用於管理控制檯導航中的鏈接嗎?我想從前端導航菜單中刪除鏈接。 – ShoeLace1291

+0

導航項目存儲爲帖子,使用'WP_Query'來查找帖子(帖子類型爲'nav_menu_item'和你的帖子標題),並用'wp_delete_post()'將其刪除? – naththedeveloper

回答

0

每個菜單項都有它的ID和類,如「.menu-item-58」,因此您可以簡單地隱藏具有所需ID的菜單項。

+0

一旦插件被禁用,這將無法工作,這個想法是在插件被停用後進行清理。 – naththedeveloper

+0

我寧願用我的插件做,而不用CSS來做。 – ShoeLace1291