Adakah yang tahu cara menambahkan pemisah menu admin? Saya menemukan ini tetapi tidak membantu.
Ada ide?
Adakah yang tahu cara menambahkan pemisah menu admin? Saya menemukan ini tetapi tidak membantu.
Ada ide?
Jawaban:
Ini cara cepat dan kotor untuk mendapatkan yang Anda inginkan.
WordPress menyimpan bagian menu admin dalam array global bernama $menu
. Untuk menambahkan pemisah Anda menambahkan elemen ke $menu
array menggunakan indeks yang berada di antara indeks opsi yang ingin Anda pisahkan.
add_admin_menu_separator()
fungsiJadi saya sudah menulis fungsi untuk merangkum logika untuk ini yang saya sebut add_admin_menu_separator()
. Anda harus memilih nomor indeks array yang lebih tinggi dari opsi yang ingin Anda tambahkan pemisah, lalu panggil fungsi yang add_admin_menu_separator()
menyampaikan indeks tersebut sebagai parameter Anda.
Sebagai contoh:
add_admin_menu_separator(37);
add_admin_menu_separator()
fungsi itu sendiriBerikut definisi fungsi add_admin_menu_separator()
yang dapat Anda salin ke functions.php
file tema Anda . Ya itu misterius tapi kemudian kode yang membuat dan menggunakan $menu
array global . (Beruntung akhirnya rencana itu akan ditinggalkan, tapi itu mungkin beberapa tahun.)
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
yang Anda butuhkanUntuk mengetahui nomor indeks apa yang Anda butuhkan, Anda dapat melakukan var_dump()
dari $GLOBALS['menu']
dari dalam sebuah admin_init
kait. Berikut adalah sedikit kode yang dapat Anda masukkan ke functions.php
file tema sementara untuk melihat nilainya. Ini hanya akan berfungsi ketika meminta URL dimulai dengan /wp-admin/
(tetapi pastikan untuk melakukannya dengan FTP dan bukan editor tema bawaan atau Anda akan kehilangan akses ke situs Anda, setidaknya sampai Anda mendapatkan akses FTP ke functions.php
file tema Anda !) :
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, Anda mungkin menemukan tautan ini berguna secara umum untuk bekerja dengan menu admin:
Meskipun kelas menu admin saya saat ini tidak menawarkan cara mudah untuk menambahkan pemisah, saya pikir saya sekarang akan menambahkan itu ketika saya punya waktu.
Sangat mudah:
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';
}
Catatan: Posisi pemisah default ( $menu[4]
) dapat berbeda tergantung dari konfigurasi yang Anda (atau plugin Anda) lakukan sebelum kail ini.
Tentu saja, Anda juga dapat men-tweak menu-top-first
dan menu-top-last
mengintrospeksi kelas.
Seandainya beberapa masalah dengan pemisah tidak ditambahkan, itu karena cara wordpress menghapus pemisah duplikat. Menambahkan ksort($menu);
ke bagian bawah fungsi memperbaiki masalah.
Ini didasarkan pada jawaban MastaBaba, tetapi tidak menggantikan apa pun pada posisi yang Anda tentukan - hanya menambah pemisah sesudahnya.
Juga menggunakan fungsi anonim sehingga hanya kompatibel dengan PHP versi 5.3 dan di atasnya.
add_action( 'admin_menu', function () {
$position = 29;
global $menu;
$separator = [
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
];
if (isset($menu[$position])) {
$menu = array_splice($menu, $position, 0, $separator);
} else {
$menu[$position] = $separator;
}
});
Agak sulit untuk menentukan apa yang Anda coba lakukan, tetapi saya pikir Anda ingin menambahkan entri tingkat atas di menu admin WordPress.
Lihat dokumentasi ini di WordPress Codex.
Singkatnya, Anda mencari penggunaan add_menu_page()
fungsi, yang mengambil sejumlah argumen dan menampilkan item tambahan dalam menu administratif sebagai saudara dari "Dasbor", "Kiriman", "Media", dll.
Semoga saya benar. :-)
add_menu_page()
.
Di bawah ini iklan tindakan ke Wordpress yang dijalankan ketika menu admin diberikan. Menu admin adalah array dan semua yang Anda lakukan, di sini, adalah menambahkan elemen array yang mendefinisikan pemisah, di posisi yang Anda tentukan.
Dari sini :
add_action( 'admin_menu', 'set_admin_menu_separator' );
function set_admin_menu_separator() {
$position = 79;
global $menu;
$menu[$position] = array(
0 => '',
1 => 'read',
2 => 'separator' . $position,
3 => '',
4 => 'wp-menu-separator'
);
}
Perhatikan bahwa, meskipun ini agak mirip dengan jawaban yang saat ini diterima, jawaban yang saat ini diterima tidak bekerja untuk saya (dan, menilai dari komentar, untuk beberapa orang lain).