Yanıtlar:
İstediğinizi elde etmenin hızlı ve kirli bir yolu.
WordPress, yönetici menüsü bölümlerini adı verilen global bir dizide saklar $menu
. Ayırıcı eklemek için, $menu
ayırmak istediğiniz seçeneklerin dizinleri arasındaki bir dizini kullanarak diziye bir öğe eklersiniz .
add_admin_menu_separator()
Fonksiyonu kullanmaBu yüzden aradığım şeyin mantığını kapsüllemek için bir fonksiyon yazdım add_admin_menu_separator()
. İkinci seçenekte daha yüksek olan bir dizi dizin numarasını gerkeceği bundan sonra bir ayırıcı eklemek istediğiniz ve sonra işlevini çağırır add_admin_menu_separator()
geçen senin parametre olarak indeksini söyledi.
Örneğin:
add_admin_menu_separator(37);
add_admin_menu_separator()
fonksiyon kendisiİşte add_admin_menu_separator()
temanın functions.php
dosyasına kopyalayabileceğiniz fonksiyonun tanımı . Evet bu arcane ama o zaman global $menu
diziyi yaratan ve kullanan kod da öyle . (Planlar nihayetinde buna değer vermeyecek, neyse ki, ama bu muhtemelen birkaç yıl olacak.)
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
İhtiyacınız olan dizini bulmakEğer bir yapabileceğini gerekenler dizin numarası anlamak için var_dump()
bir $GLOBALS['menu']
bir içinden admin_init
kanca. İşte functions.php
değerlerin ne olduğunu görmek için geçici olarak temanızın dosyasına bırakabileceğiniz bir kod . Bu, yalnızca şununla başlayan bir URL istediğinde işe yarar /wp-admin/
(ancak FTP ile yaptığınızdan emin olun ve yerleşik tema düzenleyiciyi değil veya sitenize erişiminizi kaybedeceksiniz, en azından temanın functions.php
dosyasına FTP erişimi alana kadar !) :
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, bu bağlantıları genel olarak yönetici menülerinde çalışmak için yararlı bulabilirsiniz:
Yönetici menü sınıflarım şu anda ayırıcılar eklemek için kolay bir yol sunmasa da, zamanım olduğunda bunu ekleyeceğimi düşünüyorum.
Bu kadar kolay:
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';
}
Not: Varsayılan ayırıcı konumu ( $menu[4]
), (veya eklentilerinizin) bu kancadan önce yaptığınız yapılandırmaya bağlı olarak farklı olabilir.
Tabii ki, ayrıca menu-top-first
ve menu-top-last
sınıflar içgüdüsel olarak ince ayar yapabilirsiniz .
Ayırıcılarla ilgili bazı sorunlar eklenmeseydi, bunun nedeni wordpress'in kopya ayırıcıları kaldırmasıydı. ksort($menu);
Fonksiyonun altına ekleme sorunu düzeltti.
Bu, MastaBaba'nın cevabını temel alır, ancak belirttiğiniz konumdaki hiçbir şeyin yerine geçmez - daha sonra ayırıcıyı ekler.
Ayrıca adsız bir işlev kullanır, bu nedenle yalnızca PHP sürüm 5.3 ve üzeri ile uyumludur.
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;
}
});
Ne yapmaya çalıştığınızı belirlemek biraz zor, ama bence WordPress yönetici menüsüne üst düzey bir giriş eklemek istediğinizi düşünüyorum.
WordPress Kodeksinde bu belgelere bakın .
Kısacası, add_menu_page()
çeşitli argümanlar alan ve yönetim menüsünde "Dashboard", "Posts", "Media" vb.
Umarım doğru anlamışımdır. :-)
add_menu_page()
.
Aşağıda, yönetici menüsü oluşturulduğunda çalıştırılan bir Wordpress eylemi listelenmiştir. Yönetici menüsü bir dizidir ve burada tüm yaptığınız, belirttiğiniz konumda bir ayırıcı tanımlayan bir dizi öğesi eklemektir.
Gönderen burada :
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'
);
}
Bu, şu anda kabul edilen cevaba benzese de, şu anda kabul edilen cevabın benim için işe yaramadığını (ve yorumlardan bakılırsa, birkaç kişi için) olmadığını unutmayın.