問題描述

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