WordPress中文开发手册

WordPress插件开发 — 顶级菜单

添加顶级菜单

要向WordPress管理添加新的顶级菜单,请使用add_menu_page()函数。

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

示例

假设我们要添加一个名为“WPOrg”的顶级菜单。

第一步将创建一个将输出HTML的函数。 在此功能中,我们将执行必要的安全检查,并使用Settings API呈现我们注册的选项。

注意:我们建议使用一个包裹类型的“

”包装你的HTML。

<?php
function wporg_options_page_html()
{
    // check user capabilities
    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
            // output security fields for the registered setting "wporg_options"
            settings_fields('wporg_options');
            // output setting sections and their fields
            // (sections are registered for "wporg", each field is registered to a specific section)
            do_settings_sections('wporg');
            // output save settings button
            submit_button('Save Settings');
            ?>
        </form>
    </div>
    <?php
}

第二步将注册我们的WPOrg菜单。 注册需要在admin_menu操作钩子中进行。

<?php
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()。

使用PHP文件进行HTML

便携式代码的最佳做法是创建一个需要/包含您的PHP文件的回调。

为了完整性和帮助您了解遗留代码,我们将展示另一种方法:将PHP文件路径作为$ menu_slug参数传递一个null $ function参数。

<?php
function wporg_options_page()
{
    add_menu_page(
        'WPOrg',
        'WPOrg Options',
        'manage_options',
        plugin_dir_path(__FILE__) . 'admin/view.php',
        null,
        plugin_dir_url(__FILE__) . 'images/icon_wporg.png',
        20
    );
}
add_action('admin_menu', 'wporg_options_page');

删除顶级菜单

要从WordPress管理中删除注册的菜单,请使用remove_menu_page()函数。

<?php
remove_menu_page(
    string $menu_slug
);

警告:删除菜单不会阻止用户直接访问它们。这绝对不能用来限制用户的功能。

示例

让我们说要从中删除“工具”菜单。

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

在尝试删除之前,请确保已将菜单注册到admin_menu钩子,为add_action()指定较高优先级号。

Tags