問題描述
有誰知道如何添加管理菜單分隔符?我發現 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-first 和 menu-top-last 類的內省。
參考文獻
注:本文內容整合自 google/baidu/bing 翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:gxnotes#qq.com(#替換為 @) 。