問題描述
我正在構建一個 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。