2010-06-11 149 views
1

我正在構建一個Wordpress插件,並且添加了一個菜單頁面,用於管理與現有用戶實體有點類似的「供應商」實體。WordPress的 - 插件 - 管理 - ?

我有一個類似於用戶列表的列表頁面,每個記錄都帶有編輯按鈕,當我點擊「編輯」按鈕時,我應該帶到「編輯供應商」(它沒有其子菜單項管理員菜單)該供應商的頁面。一切都存儲在「plugins/wp_vendors」文件夾中。

問:我應該使用什麼URL打開Edit頁面?應該如何爲Edit Vendor頁面註冊slug?

PS。供應商列表添加到管理員菜單,

add_menu_page('Vendors', 'Vendors', 8, 'C:\wordpress\wp-content\plugins\wp-vendors\vendors-list.php'); 

而且我可以打開

http://localhost/wp-admin/admin.php?page=wp-vendors/vendors-list.php 

列表頁面誰能幫我這個?

回答

2

嗯,首先我建議修改初始add_menu_page電話:

add_menu_page('Vendors', 'Vendors', 'manage_options', 'wp-vendors', 'my_admin_page_callback'); 

用戶級別參數已過時,因此最好使用功能。另外,最好使用管理頁面的回調函數,因爲默認情況下插件文件輸出數據可能會導致意外錯誤。

現在,有幾種方法可以做你想問的問題。您可以註冊一個新的子菜單:

add_submenu_page('wp-vendors', 'Edit Vendor', 'Edit Vendor', 'manage_options', 'wp-vendors-edit', 'my_admin_edit_page_callback'); 

並且有該功能檢查要編輯的供應商ID。如果不存在,請將它們重定向回主賣家菜單頁面。

採用這種方法,URL應該是這樣的:

http://localhost/wp-admin.php?page=wp-vendors-edit&vendor=<vendor ID> 

另一種方法就是使用URL參數,並檢查是否分開管理頁面回調。例如:

if((isset($_GET['action']) && $_GET['action'] == 'edit') && (isset($_GET['vendor']) && !empty($_GET['vendor']))){ 
    //You're editing a vendor. 
} else { 
    //You're listing the vendors. 
} 

然後,讓這樣的鏈接,編輯的樣子:

http://localhost/wp-admin.php?page=wp-vendors&action=edit&vendor=<vendor ID>