問題描述
我正在構建一個 WordPress 插件,我想要一個無法通過子菜單訪問的 edit-item 頁面 (因為這個項目不會被指定) 。
此資源 (http://codex.wordpress.org/Adding_Administration_Menus) 顯示瞭如何將管理頁面與功能相關聯,但不顯示如何將其添加為菜單項。
這可以做嗎
謝謝!
最佳解決方案
是的,這可以完成 (從技術上講,它更像是註冊整個事情,然後再刪除菜單項),但是這將是最簡單的 (我想) 檢查 $_GET super-global 中的參數,以表明用户希望編輯特定的項目。
例如,您可以有一個頁面列出要編輯的項目,然後單擊’edit’ 將項目的 ID 添加到當前 URL(query-string) 。
在顯示此頁面的功能中,如果定義了 ID,則向他們提供編輯該項目的頁面。
否則,給他們列表視圖。這就是帖子,網頁和其他自定義帖子類型。
次佳解決方案
最佳解決方案 http://wordpress.org/support/topic/add-backend-page-without-menu-item 使用 add_submenu_page 與父 slug = null
第三種解決方案
add_submenu_page 與父 slug = null
要麼
add_submenu_page,菜單 title = null
第四種方案
從我面前的答案可以看出,有很多方法可以做到這一點。不過,我認為還有另一種方法可能是最好的。
根據 $_GET 查詢的值不同加載頁面是一個選項,但它可能不是一些人正在尋找的。
關於 add_submenu_page()的建議是正確的,但是以前的每個建議都有問題。將 $menu_title 設置為 null 不會使菜單項不被顯示,因此只能使鏈接沒有任何文本。該鏈接仍然佔據了菜單中的一些空間,所以看起來很有趣。將 $parent_slug 設置為 null 沒有此問題,但我注意到頁面的 HTML title 不顯示 $page_title 文本。
我的解決方案是將 $parent_slug 設置成一個假的菜單,如'i_dont_exist'。菜單項不會顯示,當查看管理畫面時,頁面標題將被正確填寫。
add_submenu_page(
'_doesnt_exist'
,__( 'Page title', 'textdomain' )
,''
,'manage_options'
,'menu_slug'
,'display_my_menu'
);
第五種方案
是。通過子菜單甚至 WP 管理面板中的主菜單無法訪問頁面是非常有可能的。請參閲下面的代碼段。
function myplugin_render_edit_page() {
// Code contains the UI for edit page.
}
/**
* Manage menu items and pages.
*/
function myplugin_register_admin_page() {
global $_registered_pages;
$menu_slug = plugin_basename('myplugin.php');
$hookname = get_plugin_page_hookname($menu_slug,'');
if (!empty($hookname)) {
add_action($hookname, 'myplugin_render_edit_page');
}
$_registered_pages[$hookname] = true;
}
add_action('admin_menu', 'myplugin_register_admin_page');
希望這將有所幫助。
第六種方案
使用此代碼創建新頁面而不添加菜單
add_action( 'admin_menu', 'register_newpage' );
function register_newpage(){
add_menu_page($appname, $appname, 'administrator','custompage', 'custom');
remove_menu_page('custom');
}
function custom()
{
echo "hai";
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。