WordPress 插件开发教程:管理菜单

在开发 WordPress 插件时,管理菜单是一个重要的部分。它位于后台左侧,允许我们为插件或主题添加自定义设置页面。本文将带您逐步了解如何创建和管理这些菜单。

1. 添加顶级菜单

知识点:
如果我们需要在 WordPress 后台添加一个顶级菜单,可以使用 add_menu_page() 函数。这个函数允许开发者在后台左侧的菜单中添加一个新的顶级菜单项。以下是函数的基本结构:

add_menu_page(
   string $page_title,
   string $menu_title,
   string $capability,
   string $menu_slug, 
   callable $function = '',
   string $icon_url = '',
   int $position = null
);

解析:
$page_title 是菜单页面的标题,$menu_title 是菜单在后台显示的名称,$capability 决定了哪些用户可以看到这个菜单,$menu_slug 是菜单的唯一标识符,$function 是点击菜单后执行的回调函数,$icon_url 设置菜单的图标,$position 决定菜单的位置。

速记句:
add_menu_page 函数用于在 WordPress 后台添加一个顶级菜单。

2. 创建 HTML 输出函数

知识点:
为了使菜单页面有内容展示,我们需要创建一个输出 HTML 的函数。在这个函数中,可以执行必要的安全检查,并使用 WordPress 的设置 API 来显示注册的选项。

function wporg_options_page_html() {
   if (!current_user_can('manage_options')) {
      return;
   }
   ?>
    <div class="wrap">
        <h1><?= esc_html(get_admin_page_title()); ?></h1>
        <form action="options.php" method="post">
         <?php
         settings_fields('wporg_options');
         do_settings_sections('wporg');
         submit_button('Save Settings');
         ?>
        </form>
    </div>
   <?php
}

解析:
此函数首先检查当前用户是否有足够的权限来访问该页面。接着,它使用 settings_fields()do_settings_sections() 函数输出安全字段和设置字段,然后添加一个提交按钮。

速记句:
为菜单页面创建输出 HTML 的函数,并进行权限检查和设置显示。

3. 注册顶级菜单

知识点:
将创建好的 HTML 输出函数挂载到 admin_menu 钩子上,实现菜单的注册。

function wporg_options_page() {
   add_menu_page(
      'WPOrg',
      'WPOrg Options',
      'manage_options',
      'wporg',
      'wporg_options_page_html',
      plugin_dir_url(__FILE__) . 'images/icon_wporg.png',
      20
   );
}
add_action('admin_menu', 'wporg_options_page');

解析:
通过 add_menu_page() 添加顶级菜单,其中回调函数 wporg_options_page_html 用于输出页面内容。而 admin_menu 钩子确保菜单在后台管理中被正确注册。

速记句:
使用 admin_menu 钩子注册顶级菜单。

4. 添加子菜单

知识点:
当我们需要在某个现有的顶级菜单下添加子菜单时,可以使用 add_submenu_page() 函数。

add_submenu_page(
   string $parent_slug,
   string $page_title,
   string $menu_title,
   string $capability,
   string $menu_slug,
   callable $function = ''
);

解析:
$parent_slug 是父级菜单的标识符,$page_title$menu_title 分别是页面标题和菜单名称,其他参数与 add_menu_page() 类似。这个函数让我们轻松地为已有的顶级菜单添加子菜单。

function wporg_options_page() {
   add_submenu_page(
      'tools.php',
      'WPOrg Options',
      'WPOrg Options',
      'manage_options',
      'wporg',
      'wporg_options_page_html'
   );
}
add_action('admin_menu', 'wporg_options_page');

速记句:
add_submenu_page 函数用于为顶级菜单添加子菜单。

5. 删除菜单

知识点:
如果需要删除已注册的顶级菜单或子菜单,可以使用 remove_menu_page()remove_submenu_page() 函数。

function wporg_remove_options_page(){
   remove_menu_page('tools.php');
}
add_action('admin_menu', 'wporg_remove_options_page', 99);

解析:
remove_menu_page() 删除顶级菜单,但不会阻止用户直接访问它。删除操作应在菜单注册之后执行,因此 Action 的优先级应设置得较高。

速记句:
remove_menu_pageremove_submenu_page 用于删除菜单。

总结

本文介绍了如何在 WordPress 插件开发中添加和管理后台菜单。我们学习了如何添加顶级菜单和子菜单,如何创建用于页面展示的 HTML 输出函数,以及如何删除菜单。通过这些知识,您可以为插件创建用户友好的后台设置页面。

参考文献:

  1. WordPress 插件开发手册 - 管理菜单 (https://www.wpzhiku.com/document/plugins-administration-menus/)
  2. WordPress Codex - add_menu_page() 函数文档
  3. WordPress Codex - add_submenu_page() 函数文档
0 0 投票数
Article Rating
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x