1

我正在构建一个 Wordpress 插件,并添加了一个菜单页面,用于管理类似于现有用户实体的“供应商”实体。

我有一个类似于用户列表的列表页面,每条记录都有编辑按钮,当我点击“编辑”按钮时,我应该被带到“编辑供应商”(在管理菜单中没有其子菜单项)页面对于那个供应商。一切都存储在“plugins/wp_vendors”文件夹中。

问题:我应该使用什么 URL 来打开编辑页面?应该如何为 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

谁可以帮我这个事?

4

1 回答 1

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。如果它不存在,请将它们重定向回主供应商菜单页面。

使用此方法,网址将如下所示:

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

另一种方法是使用 URL 参数并将管理页面回调与 if 检查分开。例如:

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>
于 2010-06-11T15:47:35.857 回答