【问题标题】:Wordpress - Plugin - Administration -?Wordpress - 插件 - 管理 - ?
【发布时间】:2010-06-11 15:28:09
【问题描述】:

我正在构建一个 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

谁能帮我解决这个问题?

【问题讨论】:

    标签: wordpress plugins administration


    【解决方案1】:

    好吧,首先我建议修改最初的 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-09-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 2012-06-20
      • 2017-09-19
      • 2015-02-07
      • 2012-03-05
      • 1970-01-01
      相关资源
      最近更新 更多