Czy ktoś wie, jak dodać separator menu administratora? Znalazłem to, ale to nie pomogło.
Jakieś pomysły?
admin
admin-menu
użytkownik1147
źródło
źródło
Odpowiedzi:
Oto szybki i brudny sposób na zdobycie tego, czego chcesz.
tło
WordPress przechowuje sekcje menu administratora w globalnej tablicy o nazwie
$menu
. Aby dodać separator, dodajesz element do$menu
tablicy za pomocą indeksu znajdującego się między indeksami opcji, które chcesz oddzielić.Korzystanie z
add_admin_menu_separator()
funkcjiNapisałem więc funkcję do enkapsulacji logiki tego, co wywołałem
add_admin_menu_separator()
. Musisz wybrać numer indeksu tablicy, który jest wyższy niż opcja, po której chcesz dodać separator, a następnie wywołać funkcjęadd_admin_menu_separator()
przekazującą ten indeks jako parametr.Na przykład:
Sama
add_admin_menu_separator()
funkcjaOto definicja funkcji,
add_admin_menu_separator()
którą można skopiować dofunctions.php
pliku motywu . Tak, jest tajemny, ale tak samo jest z kodem, który tworzy i używa globalnej$menu
tablicy. (Na szczęście planujemy go wycofać, na szczęście, ale to prawdopodobnie potrwa kilka lat).Znalezienie do indeksu
$menu
, że trzebaAby dowiedzieć się, co trzeba numer indeksu można zrobić
var_dump()
z$GLOBALS['menu']
od wewnątrzadmin_init
haka. Oto trochę kodu, który możeszfunctions.php
tymczasowo upuścić do pliku motywu, aby zobaczyć, jakie są wartości. Będzie to działać tylko w przypadku żądania adresu URL rozpoczynającego się od/wp-admin/
(ale pamiętaj, aby zrobić z FTP, a nie z wbudowanym edytorem motywów, inaczej stracisz dostęp do swojej witryny, przynajmniej do momentu uzyskania dostępu FTP dofunctions.php
pliku motywu !) :Zobacz też:
BTW, te linki mogą być przydatne ogólnie do pracy z menu administracyjnymi:
wp-admin-menu-classes.php
Chociaż moje klasy menu administratora nie oferują obecnie łatwego sposobu dodawania separatorów, myślę, że dodam je teraz, kiedy będę miał czas.
źródło
To proste jak:
Uwaga: Domyślna pozycja separatora (
$menu[4]
) może być różna w zależności od konfiguracji, którą wykonałeś (lub twoje wtyczki) przed tym hakiem.Oczywiście możesz również dostosować introspekcję
menu-top-first
imenu-top-last
klasy.źródło
Niektóre problemy z brakiem dodawania separatorów wynikały ze sposobu, w jaki wordpress usuwa zduplikowane separatory. Dodanie
ksort($menu);
na dole funkcji rozwiązało problem.źródło
Opiera się to na odpowiedzi MastaBaba, ale niczego nie zastępuje w określonej przez Ciebie pozycji - po prostu dodaje separator.
Używa także anonimowej funkcji, więc jest kompatybilna tylko z PHP w wersji 5.3 i wyższej.
źródło
Trochę trudno jest ustalić, co próbujesz zrobić, ale myślę, że chcesz dodać pozycję najwyższego poziomu w menu administracyjnym WordPress.
Zobacz tę dokumentację w Kodeksie WordPress.
Krótko mówiąc, szukasz użycia
add_menu_page()
funkcji, która pobiera wiele argumentów i wyświetla dodatkowy element w menu administracyjnym jako rodzeństwo „Dashboard”, „Posty”, „Media” itp.Mam nadzieję, że dobrze to zrozumiałem. :-)
źródło
add_menu_page()
.Poniżej zamieszczono akcję do Wordpress, która jest uruchamiana po wyświetleniu menu administratora. Menu administratora to tablica i wszystko, co tutaj robisz, polega na dodaniu elementu tablicy, który definiuje separator, w określonej przez ciebie pozycji.
Od tutaj :
Zauważ, że chociaż to raczej przypomina obecnie akceptowaną odpowiedź, obecnie zaakceptowana odpowiedź nie działała dla mnie (i sądząc po komentarzach, dla kilku innych).
źródło