問題描述
有誰知道如何新增管理選單分隔符?我發現 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(#替換為 @) 。