2013-07-01 38 views
0

我想爲我的插件創建一個管理菜單。WordPress的admin_menu

$my_hook = add_menu_page( 
        'String', 
        'String', 
        'manage_options', 
        'mypage&type=mytype', 
        'my_function' 
        ); 

,如果我嘗試現在

wp-admin/admin.php?page=mypage&type=mytype 
通過菜單

存取權限的網頁,我得到:「您沒有足夠的權限來訪問此頁面。」在菜單項中是否可以包含類似& type = mytype的GET參數?

謝謝。

+0

它不能是一個變量參數無論如何,所以**包括這樣的參數:

你可以試試這個? – brasofilo

+0

林不知道我明白。爲什麼我不想包含這樣的參數?事情是,除了菜單之外,我可以在workdpress中的任何地方進行操作。 – Kasper

+0

我沒有試圖提供一種解決方案來使[[$ menu_slug]](http://codex.wordpress.org/Function_Reference/add_menu_page#Parameters)以您嘗試的方式工作......我所做的不明白的是:如果我們刪除參數,插件頁面按預期工作。有沒有這個參數可能會有什麼不同?作爲插件頁面的最終結果?我的意思是:當你到達插件的頁面時,'type'總是'mytype' ...還有什麼可能發生? – brasofilo

回答

0

我無法確定爲什麼試圖將參數添加到菜單或子菜單slug會使生成的鏈接無效。但$menu_slug在函數add_menu_pageadd_submenu_page()中用於搜索PHP文件(而不是函數回調)並構建插件URL。
試圖添加額外的運算符?&不會很好,即它不能與plugin_basenameget_plugin_page_hookname一起使用。

下面是一個解決方法,使用與各種頂級管理菜單相同的回調函數。該URL的將是:

和回調函數檢查$_GET['page']

add_action('admin_menu', 'menu_so_17406309'); 

function menu_so_17406309() 
{ 
    add_menu_page( 
     'First', 
     'First', 
     'manage_options', 
     'myplugin1', 
     'callback_so_17406309' 
    ); 
    add_menu_page( 
     'Second', 
     'Second', 
     'manage_options', 
     'myplugin2', 
     'callback_so_17406309' 
    ); 
} 

function callback_so_17406309() 
{ 
    switch($_GET['page']) 
    { 
     case 'myplugin1': 
      echo 'first page'; 
     break; 
     case 'myplugin2': 
      echo 'second page'; 
     break; 
     default: 
      echo 'error'; 
     break; 
    } 
} 

相關search query在WordPress的答案。

+0

是的,這將工作。但是,這不是我正在尋找的。我會回答我自己的問題,但感謝您的時間和提示! – Kasper

0

你可以做這樣的事情

$ my_hook = add_menu_page( '串', '字符串', 'manage_options', , '創建my_function' 頁面=頁面名稱?');

0

對於manage_options是一個必需的選項,指定該菜單顯示給用戶的能力。 more details...

您將具有足夠權限的角色存取或管理此頁面。爲什麼你需要

$my_hook = add_menu_page( 
    'String', 
    'String', 
    'administrator', 
    'mypage&type=mytype', 
    'my_function' 
);