2012-12-14 59 views
0

我正在創建一個插件,它創建了幾個虛擬頁面,我希望這些鏈接可以在菜單管理頁面中使用,讓用戶可以自由地將它們添加爲他們創建菜單。WordPress的:在管理菜單頁面添加元框

我想在菜單管理中添加一個元框,與頁面/類別元框非常相似,以便讓用戶選擇要在菜單中添加的頁面。

+0

@brasofilo Mate,我不會發布在SO上,沒有一點研究,我已經通過網絡查找了解決我的問題的方案,我通常收到的解決方案有助於將meta盒添加到POST/PAGE管理中在WP中,而不是導航菜單 –

+0

我誤解了問題並做了一個不恰當的評論,我的道歉。 – brasofilo

回答

1

顯然,唯一可能的研究是核心本身。

這裏,/wp-includes/nav-menu.php,我們可以得到如何插入元框:

add_action('admin_init', 'so_13875144_nav_menu_meta_box'); 

function so_13875144_nav_menu_meta_box() { 
    add_meta_box( 
     'my-custom-nav-box', 
     __('Custom Box'), 
     'so_13875144_display_menu_custom_box', 
     'nav-menus', 
     'side', 
     'default' 
    ); 
} 

function so_13875144_display_menu_custom_box() { 
    /* Not sure about this global var */ 
    //global $_nav_menu_placeholder; 
    //$_nav_menu_placeholder = (0 > $_nav_menu_placeholder) ? intval($_nav_menu_placeholder) - 1 : -1; 
    ?> 
     <p id="menu-item-custom-box"> 
      <label class="howto" for="custom-menu-item-custom-box"> 
       <span><?php _e('URL'); ?></span> 
       <input id="custom-menu-item-custom-box" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-custom-box]" type="text" class="code menu-item-textbox" value="my text" /> 
      </label> 
     </p> 
    <?php 
} 

nav menu meta box

,困難的部分,我還沒有管理做工作,就是爲了保存價值。
這是需要研究的文件/wp-admin/nav-menus.php

試圖掛接到行動wp_update_nav_menu,但自定義元框輸入字段沒有被傳遞到$_POST

WordPress的答案可能有一些提示:https://wordpress.stackexchange.com/search?q=wp_update_nav_menu

+0

[相關文章](http://wordpress.org/support/topic/add-metabox-to-the-plugin-settings-page)WP論壇。 – brasofilo

+0

Thx爲GIANT推送,但我想正確的核心文件來尋找靈感將是'/ wp-admin/includes/nav-menu.php' –

+0

@SankalpShekhar,很酷!如果您設法使其發揮作用,那麼在此發佈解決方案會很好。乾杯。 – brasofilo

0

我知道我遲到了,但只是爲別人試圖做到這一點...

b__是正確的,那就是途徑讓它顯示在頁面上,除了它比任何其他字段更容易使用複選框,因爲有一個內置的JavaScript函數,用於查找複選框。

所有你需要做的是從現有的複選框複製HTML -

<li><label class="menu-item-title"><input type="checkbox" class="menu-item-checkbox" name="menu-item[-1][menu-item-object-id]" value="2"> Sample Page</label><input type="hidden" class="menu-item-db-id" name="menu-item[-1][menu-item-db-id]" value="0"><input type="hidden" class="menu-item-object" name="menu-item[-1][menu-item-object]" value="page"><input type="hidden" class="menu-item-parent-id" name="menu-item[-1][menu-item-parent-id]" value="0"><input type="hidden" class="menu-item-type" name="menu-item[-1][menu-item-type]" value="post_type"><input type="hidden" class="menu-item-title" name="menu-item[-1][menu-item-title]" value="Sample Page"><input type="hidden" class="menu-item-url" name="menu-item[-1][menu-item-url]" value=""><input type="hidden" class="menu-item-target" name="menu-item[-1][menu-item-target]" value=""><input type="hidden" class="menu-item-attr_title" name="menu-item[-1][menu-item-attr_title]" value=""><input type="hidden" class="menu-item-classes" name="menu-item[-1][menu-item-classes]" value=""><input type="hidden" class="menu-item-xfn" name="menu-item[-1][menu-item-xfn]" value=""></li> 

但給他們每人一個唯一的ID,並把您的詳細資料在URL,標題等

然後,添加一個提交按鈕在結束添加到菜單 -

<input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="YOUR NAME" id="YOUR ID" onclick="(function(){$('#THE DIV YOU HAVE PUT YOUR LIST IN').addSelectedToMenu(api.addMenuItemToBottom);})"/> 

而且應該將項目添加到列表中。

相關問題