如何通过插件在网络管理仪表板上创建工具菜单

时间:2021-07-12 作者:O. Jones

我正在编写一个插件。当插件安装在多站点WordPress实例上时,我想在网络管理仪表板上放置一个工具菜单项。

我该怎么做?

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

我想在网络管理仪表板上放置一个“工具”菜单项

如果你的意思是在核心顶层之下;仪表板“;菜单,然后您可以使用network_admin_menu hook 随着add_submenu_page() 添加菜单项。

Preview image

或者,如果您想要如下所示的顶级菜单,则使用与上述相同的挂钩,但使用add_menu_page() 添加菜单,然后使用add_submenu_page() 将菜单项(即子菜单)添加到顶层菜单。

Preview image

完整工作示例

<?php
/**
 * Plugin Name: WPSE 391799
 * Description: Network Admin custom "Tools" menus
 * Version: 1.0
 */

// Adds the custom Network Admin menus.
add_action( \'network_admin_menu\', \'wpse_391799_add_network_admin_menus\' );
function wpse_391799_add_network_admin_menus() {
    add_submenu_page( \'index.php\',      // parent slug or file name of a standard WordPress admin page
        \'My Tools Page\',                // menu page title
        \'My Tools (Submenu)\',           // menu title
        \'manage_network\',               // user capability required to access the menu (and its page)
        \'my-tools-page\',                // menu slug that\'s used with the "page" query, e.g. ?page=menu-slug
        \'wpse_391799_render_tools_page\' // the function which outputs the page content
    );

    add_menu_page( \'My Tools Page\',      // menu page title
        \'My Tools (Top-Level)\',          // menu title
        \'manage_network\',                // user capability required to access the menu (and its page)
        \'my-tools-page2\',                // menu slug to that\'s with the "page" query, e.g. ?page=menu-slug
        \'wpse_391799_render_tools_page\', // the function which outputs the page content
        \'dashicons-admin-tools\',         // menu icon (in this case, I\'m using a Dashicons icon\'s CSS class)
        24                               // menu position; 24 would place the menu above the "Settings" menu
    );

    add_submenu_page( \'my-tools-page2\',
        \'My Tools Submenu Page\',
        \'My Tools Submenu\',
        \'manage_network\',
        \'my-tools-submenu-page\',
        \'wpse_391799_render_tools_submenu_page\'
    );
}

// Outputs the content for the "My Tools (Submenu)" and "My Tools (Top-Level)" pages.
function wpse_391799_render_tools_page() {
    ?>
        <div class="wrap my-tools-parent">
            <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
            <p>Foo bar. Bla bla. Your content here.</p>
        </div>
    <?php
}

// Outputs the content for the "My Tools Submenu" page.
function wpse_391799_render_tools_submenu_page() {
    ?>
        <div class="wrap my-tools-submenu">
            <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
            <p>Foo bar. Bla bla. Your content here.</p>
        </div>
    <?php
}

SO网友:tiago calado

在函数上使用此代码。php我们制作了一个包含3页的仪表板选项卡(在本例中,应该在名为inc的文件夹中的主题路径上创建)。插件上的代码应该非常相似,但与插件文件上的代码非常相似。

如果需要解释的话,就在我到家的几个小时内。谢谢

function tc_editor(){
  add_menu_page(\'tiago\\\'s\', \'Procamiao\', \'manage_options\', \'editor_tiagos\', \'tc_definicoes\', home_url().\'/wp-content/themes/procamiao/inc/mini_logo.png\', 4);
  add_submenu_page(\'editor_tiagos\', \'separador_definicoes\', \'Definições\', \'manage_options\', \'editor_tiagos\');
  add_submenu_page(\'editor_tiagos\', \'separador_banners\', \'Banners\', \'manage_options\',\'editor_banners\', \'tc_banners\');
  add_submenu_page(\'editor_tiagos\', \'separador_default\', \'Default\', \'manage_options\',\'editor_tabelas\', \'tc_default\');
}
add_action(\'admin_menu\', \'tc_editor\');

function tc_definicoes(){require_once plugin_dir_path(__FILE__).\'inc/definicoes.php\';}
function tc_banners(){require_once plugin_dir_path(__FILE__).\'inc/banners.php\';}
function tc_default(){require_once plugin_dir_path(__FILE__).\'inc/default.php\';}

相关推荐

Is mature Multisite

我正在运行一个多站点。然而,我希望能够分离某些站点。我看到的唯一选项是“成熟”复选框。我没有运行成熟的网站。我想添加一个“Premium”复选框,但这似乎是不可能的。因此,我将我的Premium博客标记为“成熟”复选框。是否有“Is\\u matured()”类型的函数来确定多站点是否标记为成熟?