2012-05-29 114 views
1

我同時制定了WordPress插件有這個問題。下面是我的工作區域的代碼片段:WordPress的add_submenu_page不會接受參數

add_submenu_page('admin_manager', 
        'Add Event', 
        'Add Event', 
        'manage_options', 
        'add_event&action=modify', 
        'add_event_handler'); 

正如你所看到的,在我的菜單鼻涕蟲我要加入「&行動=修改」

'add_event&action=modify' 

但是,當我做到這一點,Wordpress否認我的訪問權限,並說我沒有適當的權限。它工作正常,沒有額外的參數,有沒有內置到wordpress中,不允許這樣的事情?

任何想法或解決方法?

回答

2

嵌塞參數不打算採取在查詢參數。如果你打算設置某種默認行爲(我也想象「行爲」查詢很可能是由WordPress本身使用的保留關鍵字),爲什麼不設置頁面來填充爲如果參數默認存在?

我的猜測是,你在地方希望其他參數爲好,然後你可以使用表單發送數據(通過POST或GET)使用這些參數來填充你的頁面。例如:

<!-- SUBMENU PAGE --> 
<form action="" method="GET"> 
    <label>Select Action: </label> 
    <select name="jKern_action"> 
     <option value="modify">Modify</option> 
     <option value="add">Add Event</option> 
     <option value="delete">Delete Event</option> 
    </select> 
</form> 
<?php 
$action = isset($_GET['jKern_action']) ? $_GET['jKern_action'] : 'modify'; 
switch($action) 
{ 
    case 'add' : 
    ?> 
     <!-- YOUR EVENT ADDING HTML HERE --> 
    <?php 
    break; 
    case 'delete' : 
    ?> 
     <!-- DELETE HTML HERE --> 
    <?php 
    break; 
    default : 
    ?> 
     <!-- DEFAULT MODIFICATION HTML --> 
<?php 
} 
?> 

這不是一個完美的例子,但我相信你可以收集在這裏做了什麼。如前所述,slug參數並不是用來填充查詢的,而且您還應該命名您的GET和POST鍵(以及選項和元鍵),這些對您的代碼來說是唯一的,因此任何命名衝突的可能性都很小。

而不依賴窗體上導航會是這樣的正確使用子菜單導航的另一個例子:

<a href="?page=add_event&jKern_action=add">Add Event</a> 
<a href="?page=add_event&jKern_action=modify">Edit Event</a> 
<a href="?page=add_event&jKern_action=delete">Delete Event</a> 
<?php 
... 
?> 

你最好的選擇是查找如何插件作者的一些例子已經有效地使用add_submenu_page()函數,但大多數情況下,你應該玩弄它,並習慣如何正常的WordPress的流程工作。

祝你好運,讓我知道,如果這有助於。

+1

我試圖非常相似,你描述了事情的「添加」,「修改」和「刪除」,和你說的那樣好是壞到交換機。我確實有其他的路徑使用內聯鏈接,附加了參數,並且它可以順暢地工作。我剛剛希望讓用戶鏈接到頁面的「添加」方面直接從sub_menu鏈接,以及... 另外,我對所有的插件相關的項目唯一的前綴,我只是剝奪他們着想簡單。 看到我走在正確的道路上真是令人振奮,如此簡單的東西實在行不通,這太糟糕了。 –

+0

我很高興,這一切都爲你工作。希望這個小小的打嗝不會像你想要做的那樣太多。 – maiorano84

+0

希望我能爲我們的導演找到一個可以接受的選擇。感謝您的提示和建議! –