WordPress插件開(kāi)發(fā)教程手冊(cè) — 管理菜單

本教程詳細(xì)介紹了如何在WordPress插件開(kāi)發(fā)中添加自定義管理菜單,包括頂級(jí)菜單和子菜單的創(chuàng)建方法。通過(guò)代碼示例,展示了如何使用`add_menu_page()`函數(shù)添加頂級(jí)菜單,并提供了最佳實(shí)踐建議,幫助開(kāi)發(fā)者更好地管理插件設(shè)置選項(xiàng)頁(yè)面。

管理菜單是 WordPress 后臺(tái)左側(cè)顯示的后臺(tái)管理功能菜單,可以讓我們?yōu)椴寮蛑黝}添加自定義設(shè)置選項(xiàng)頁(yè)面。

有關(guān)管理導(dǎo)航菜單的信息,請(qǐng)參閱主題開(kāi)發(fā)手冊(cè)的導(dǎo)航菜單一章。

頂級(jí)菜單和子菜單

頂級(jí)菜單在 WordPress 后臺(tái)左側(cè)顯示,可以包含一組子菜單。插件需要添加頂級(jí)菜單還是子菜單,可以根據(jù)最終用戶需求確定。

建議插件開(kāi)發(fā)者把插件添加的設(shè)置選項(xiàng)頁(yè)面作為「設(shè)置」或「工具」的子菜單添加。

頂級(jí)菜單

添加一個(gè)頂級(jí)菜單

如果我們需要添加頂級(jí)菜單到 WordPress 后臺(tái),可以使用 add_menu_page() 函數(shù)。

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

示例

比如,我們需要添加一個(gè)名為 “WPOrg” 的頂級(jí)菜單。

第一步,我們需要?jiǎng)?chuàng)建一個(gè)輸出 HTML 的函數(shù),在這個(gè)函數(shù)中,我們會(huì)執(zhí)行必要的安全檢查,并使用 設(shè)置 API 顯示我們注冊(cè)選項(xiàng)。

建議使用一個(gè) DIV 來(lái)包括我們的 HTML 內(nèi)容。
<?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
}

第二步,把上面生成 HTML 的函數(shù)掛載到 admin_menu Action 鉤子上面。

<?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');

使用 PHP 創(chuàng)建 HTML

可移植代碼的最佳實(shí)踐是創(chuàng)建一個(gè)需要包含文件的回調(diào)函數(shù)。為了完整性和幫助理解遺留代碼,我們將使用另外一種方法注冊(cè)菜單:把一個(gè)文件路徑作為 $menu_slug 參數(shù)傳遞給 $function 參數(shù)。

<?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');

刪除頂級(jí)菜單

如果我們需要?jiǎng)h除后臺(tái)中已經(jīng)注冊(cè)的頂級(jí)菜單,可以使用 remove_menu_page() 函數(shù)。

remove_menu_page(
    string $menu_slug
);
刪除菜單不會(huì)阻止用戶直接訪問(wèn)它們,永遠(yuǎn)不要采用這種操作來(lái)限制用戶功能。

示例

比如,我們需要從 WordPress 后臺(tái)刪除 “工具” 這個(gè)頂級(jí)菜單。

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

在刪除之前,我們需要確保已經(jīng)注冊(cè)了這個(gè)菜單,所以,刪除 Action 的優(yōu)先級(jí)應(yīng)該要比注冊(cè)的低。

子菜單

如果我們需要添加一個(gè)子菜單到 WordPress 后臺(tái),使用 add_submenu_page() 函數(shù)。

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

示例

假設(shè)我們需要在 “工具” 頂級(jí)菜單中,添加一個(gè)子菜單:“WPOrg 設(shè)置”

第一步,我們將創(chuàng)建一個(gè)輸出 HTML 的函數(shù),在這個(gè)函數(shù)中,我們執(zhí)行必要的安全檢查,使用 設(shè)置 API 顯示我們注冊(cè)的選項(xiàng)。

建議使用一個(gè) DIV 包括我們的 HTML 內(nèi)容。
<?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
}

第二步,把上面生成 HTML 的函數(shù)掛載到 admin_menu Action 鉤子上。

<?php
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 的相關(guān)參數(shù),請(qǐng)參閱參考中的 add_submenu_page()。

預(yù)定義子菜單

WordPress 內(nèi)置了一些輔助函數(shù),提前幫助我們?cè)O(shè)置好了 $parent_slug 參數(shù),我們只需使用相應(yīng)的函數(shù)即可添加頁(yè)面為我們需要的頂級(jí)菜單的子菜單。以下是 WordPress 為我們定義好的輔助函數(shù)。

刪除子菜單

刪除子菜單的方法和刪除頂級(jí)菜單是一樣的。

我們提供 WordPress主題和插件定制開(kāi)發(fā)服務(wù)

本站長(zhǎng)期承接 WordPress主題、插件、基于 WooCommerce 的商店商城開(kāi)發(fā)業(yè)務(wù)。 我們有 10 年WordPress開(kāi)發(fā)經(jīng)驗(yàn),如果你想 用WordPress開(kāi)發(fā)網(wǎng)站, 請(qǐng)聯(lián)系微信: iwillhappy1314,或郵箱: [email protected] 咨詢。

發(fā)表回復(fù)

您的郵箱地址不會(huì)被公開(kāi)。 必填項(xiàng)已用 * 標(biāo)注

*