Saya baru tahu parameter menu_position sepertinya Anda dapat menempatkan menu jenis posting kustom Anda hampir di mana-mana. Kecuali di atas menu Posting!
Bagaimana saya bisa mencapai itu?
Saya baru tahu parameter menu_position sepertinya Anda dapat menempatkan menu jenis posting kustom Anda hampir di mana-mana. Kecuali di atas menu Posting!
Bagaimana saya bisa mencapai itu?
Jawaban:
Posisi untuk Item Menu Inti
Deskripsi parameter untuk "posisi menu"
$position
( integer ) ( opsional ) Posisi dalam urutan menu menu ini akan muncul. Secara default, jika parameter ini dihilangkan, menu akan muncul di bagian bawah struktur menu. Semakin tinggi angkanya, semakin rendah posisinya di menu.PERINGATAN: jika dua item menu menggunakan atribut posisi yang sama, salah satu item dapat ditimpa sehingga hanya satu item yang ditampilkan! Risiko konflik dapat dikurangi dengan menggunakan desimal alih-alih nilai integer, misalnya 63,3 bukannya 63.
Default: bagian bawah struktur menu
Plugin JetPack baru menempatkan tautan menu tepat di bawah tautan Dashboard. Ia melakukannya dengan mengatur urutan menu ke 0, dengan memfilter array $ menu_order :
function jetpack_menu_order( $menu_order ) {
$jp_menu_order = array();
foreach ( $menu_order as $index => $item ) {
if ( $item != 'jetpack' )
$jp_menu_order[] = $item;
if ( $index == 0 )
$jp_menu_order[] = 'jetpack';
}
return $jp_menu_order;
}
Karena penasaran, apa yang akan terjadi jika Anda mencoba 0 sebagai menu_position?
Saya telah menggunakan 'menu_postion' => 0, 1,2,3,4.
Tidak masalah kok. Jika Anda bermain-main dengannya Anda dapat dengan mudah mengetahuinya.
Menggunakan 'menu_position' => 1 harus meletakkannya di bawah item menu Dashboard di atas hal pemisah. 0 Sebaiknya letakkan di atas Dasbor
Mencari solusi di web tetapi tidak ditemukan. Cukup lakukan trik ini (misalnya). Di sini Anda memiliki daftar posisi asli:
- 2 Dashboard
- 4 Pemisah
- 5 Posting
- 10 Media
- 15 Tautan
- 20 halaman
- 25 Komentar
- 59 Pemisah
- 60 Penampilan
- 65 Plugin
- 70 Pengguna
- 75 Alat
- 80 Pengaturan
- 99 Pemisah
Jika Anda memiliki lebih banyak item, Anda dapat membaca posisi saat ini untuk setiap item dengan mencetak menu $ global:
global $menu;
print_r($menu);
Jadi jika saya mengerti, tidak ada yang bisa mencegah kami memesan ulang menu seperti yang kami inginkan:
function re_order_menu () {
// ------- Put away items
$dashboard = $menu[2]
$separator1 = $menu[4]
$posts = $menu[5]
$media = $menu[10]
$links = $menu[15]
$pages = $menu[20]
$comments = $menu[25]
$separator2 = $menu[59]
$appearance = $menu[60]
$plugins = $menu[65]
$users = $menu[70]
$tools = $menu[75]
$settings = $menu[80]
$separator3 = $menu[99]
// -------- Reset menu
unset($menu[2]);
unset($menu[4]);
unset($menu[5]);
unset($menu[10]);
unset($menu[15]);
unset($menu[20]);
unset($menu[25]);
unset($menu[59]);
unset($menu[60]);
unset($menu[65]);
unset($menu[70]);
unset($menu[75]);
unset($menu[80]);
unset($menu[99]);
// -------- Re-order menu as you want
$dashboard = $menu[2];
$separator1 = $menu[4]
$posts = $menu[5];
$books = $menu[6];
/* my tons of custom items */
$authors = $menu[7];
$requests = $menu[8];
$clients = $menu[9];
$sellers = $menu[10];
$services = $menu[11];
$schedules = $menu[12];
/* let some space after */
$media = $menu[30];
$links = $menu[31];
$pages = $menu[32];
$comments = $menu[33];
$separator2 = $menu[59];
$appearance = $menu[60];
$plugins = $menu[65];
$users = $menu[70];
$tools = $menu[75];
$settings = $menu[80]
$separator3 = $menu[99];
}
add_action('admin_menu', 're_order_menu');
Ini berfungsi dengan baik untuk saya jadi, saya pikir ini sah, saya salah?
Ini adalah bug di WordPress. Silakan lihat utas ini di Trac: http://core.trac.wordpress.org/ticket/14755
Diperbaiki pada 4.4 ...
https://developer.wordpress.org/reference/functions/add_menu_page/#notes
Anda bisa menggunakan ini:
function my_move_post () {
global $menu;
$menu[6] = $menu[5]; //move post from post 5 to 6
unset($menu[5]); //free the position 5 so you can use it!
}
add_action('admin_menu', 'my_move_post');
Sekarang Anda dapat menggunakan posisi 5 untuk menambahkan menu Anda di atas menu Posting.
di sini adalah peringatan untuk seluruh masalah ...
WordPress 4.9.2
wp-admin / menu.php:
// If we're to use $_wp_last_object_menu, increment it first.
$ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu;
PEMBERITAHUAN: harus berupa bilangan bulat dan BUKAN sudah diatur, jika tidak maka akan masuk ke bagian bawah daftar.
Untuk solusi yang berfungsi di WordPress 5 dan di bawah, posisikan ulang dengan kode berikut:
add_filter('custom_menu_order', '__return_true');
add_filter('menu_order', function($menu_order) {
if (
false !== ($k1 = array_search($v1 = 'edit.php', $menu_order))
&& false !== ($k2 = array_search($v2 = 'edit.php?post_type=foo', $menu_order))
) {
array_splice($menu_order, $k1, 0, $v2);
array_splice($menu_order, $k2 + 1, 1);
}
return $menu_order;
});
Ini mengasumsikan Anda tidak memiliki lebih dari satu item menu bersaing untuk posisi pole.
Pada tautan yang sama dengan yang Anda tautkan, terbaca:
menu_position
(integer) (optional) The position in the menu order the post type should appear.
Default: null - defaults to below Comments
5 - below Posts
10 - below Media
20 - below Pages
60 - below first separator
100 - below second separator
Jadi, jika Anda mengatur menu_position
ke sesuatu seperti 4
, maka itu harus meletakkannya di atas posting.
Posisi -1
meletakkannya di atas Dashboard
tautan.
Anda dapat menggunakan nilai desimal (sebagai string). Misalnya, saya memiliki beberapa jenis posting kustom yang saya tempatkan pada posisi terakhir di menu (100001, 100002, 100003).
Kemudian, cukup masukkan kode ini untuk memindahkannya di atas Postingan dan di bawah item menu Dashboard .
function reorder_admin_menu() {
global $menu;
// Add one separator
$menu["3.1"] = array(
0 => '',
1 => 'read',
2 => 'separator_' . "anything_unique",
3 => '',
4 => 'wp-menu-separator'
);
// I have put my menu items waay at the end (exactly these values), so move them up
$menu["3.2"] = $menu[100001];
$menu["3.3"] = $menu[100002];
$menu["3.4"] = $menu[100003];
unset($menu[100001]);
unset($menu[100002]);
unset($menu[100003]);
// move Media menu (position 10) item to front, in the same group
$menu["3.5"] = $menu[10];
unset($menu[10]);
// Debug: ksort($menu); error_log( var_export( $menu, true ) );
}
add_action( 'admin_menu', 'reorder_admin_menu', 999 );