問題描述

有誰知道如何添加管理菜單分隔符?我發現 this,但沒有幫助。

有任何想法嗎?

最佳解決方案

這是一個快速而骯髒的方式來獲得你想要的。

Background

WordPress 將管理菜單部分存儲在名為 $menu 的全局數組中。要添加分隔符,請使用要分離的選項的索引之間的索引向 $menu 數組添加元素。

使用 add_admin_menu_separator()功能

所以我寫了一個函數來封裝這個我稱為 add_admin_menu_separator()的邏輯。您需要選擇一個數組索引號,該數字高於要添加分隔符的選項,然後調用函數 add_admin_menu_separator()傳遞所述索引作為參數。

例如:

add_admin_menu_separator(37);

add_admin_menu_separator()功能本身

以下是 add_admin_menu_separator()功能的定義,您可以將其複製到主題的 functions.php 文件中。是的,這是奧秘,那麼創建和使用全局 $menu 數組的代碼也是如此。 (計劃最終會棄用它,幸運的是,可能會是幾年。)

function add_admin_menu_separator($position) {
  global $menu;
  $index = 0;
  foreach($menu as $offset => $section) {
    if (substr($section[2],0,9)=='separator')
      $index++;
    if ($offset>=$position) {
      $menu[$position] = array('','read',"separator{$index}",'','wp-menu-separator');
      break;
    }
  }
  ksort( $menu );
}

找到您需要的 $menu 的索引

要找出您需要的索引號,您可以從 admin_init 鈎子中執行 $GLOBALS['menu']var_dump()。這裏有一些代碼可以暫時放入主題的 functions.php 文件中,以查看這些值。這僅在請求以/wp-admin/開頭的 URL(但是請確保使用 FTP 而不是內置的主題編輯器) 或您將無法訪問您的網站時起作用,至少在您訪問主題的 functions.php 文件之前! ):

add_action('admin_init','dump_admin_menu');
function dump_admin_menu() {
  if (is_admin()) {
    header('Content-Type:text/plain');
    var_dump($GLOBALS['menu']);
    exit;
  }
}

也可以看看:

BTW,您可能會發現這些鏈接一般適用於使用管理菜單:

  • 更改管理菜單部分的順序

  • 最新:wp-admin-menu-classes.php

雖然我的管理菜單課程目前不提供一個簡單的方法來添加分隔符,我想我現在補充説,當我有時間。

次佳解決方案

很簡單:

add_action( 'admin_init', 'add_sep' );
function add_sep() {

    if ( ! is_admin() )
        return false;

    global $menu;
    $sep = $menu[4]; // that's the default separator
    $pos = 6; // change it for the desired position
    $menu = array_merge(
        array_slice( $menu, 0, $pos ),
        array( $sep ),
        array_slice( $menu, $pos + 1, -1)
    );
    $menu[ $pos - 1 ][4] .= ' menu-top-last';
    $menu[ $pos + 1 ][4] .= ' menu-top-first';

}

注意:默認分隔符位置 ($menu[4]) 可能會根據您 (或插件) 在此鈎子之前所做的配置而有所不同。

當然,你也可以調整 menu-top-firstmenu-top-last 類的內省。

參考文獻

注:本文內容整合自 google/baidu/bing 翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:gxnotes#qq.com(#替換為 @) 。