WordPress 3.8 wprowadził w zasadzie wtyczkę MP6, która między innymi używa kultowej czcionki o nazwie Dashicons do wyświetlania czcionek na desce rozdzielczej.
Teraz dobrze wiadomo, że register_post_type ma argument, 'menu_icon'
który pozwala określić niestandardową ikonę dla pozycji menu administratora CPT.
W moich wtyczkach / motywach często używam tego argumentu z moimi niestandardowymi obrazami ikon, które normalnie są ciemne, ponieważ menu administratora w wersji 3.8 miało jasne tło. Przy domyślnym ciemnym tle menu w WP 3.8 moje ikony stają się prawie niewidoczne.
Poza tym myślę, że użycie nowych dashiconów do mojego CPT będzie fajne.
Po kilku badaniach wiem, że mogę po prostu użyć CSS z dashiconów, coś w tym rodzaju
#menu-posts-mycpt div.wp-menu-image:before { content: "\f226"; }
Jednak użycie zarówno 'menu_icon'
argumentu, jak register_post_type
i poprzedniego css spowoduje wydrukowanie obu ikon w WP 3.8 i jednej ikony + dziwny znak w WP 3.8-, i bez 'menu_icon'
argumentu użycia , w starszych wersjach używana jest domyślna ikona.
Wiem, że mogę warunkowo dodać 'menu_icon'
w register_post_type
dla WP 3.8- wersjach i warunkowo dodać poprzedni css dla WP 3.8+, ale:
- który wymaga dodania kodu (2 instrukcji warunkowych) dla każdego zarejestrowanego CPT, więc aktualizacja wtyczek / motywów jest dość ciężką pracą
- wydaje mi się bardziej obejściem niż eleganckim rozwiązaniem
Tak więc pytania są następujące:
Czy można używać dashicons css dla WP 3.8+ i używać niestandardowych ustawień obrazu za pomocą 'menu_icon'
parametrów dla poprzednich wersji w „prostszy” sposób, który nie wymaga dodania 2 warunku dla każdego zarejestrowanego CPT?
A jeśli tak, to czy jest to możliwe w jakiś automatyczny sposób, register_post_type
bez żadnego dodatkowego kodu?
źródło
menu_icon
sobie, nie będziesz mógł użyć adresu URL obrazu dla poprzednich wersji ... ale kogo to obchodzi z przeszłością? :)Łatwo: po prostu przeczytaj odpowiednią część
register_post_type()
phpDocBlock, a następnie użyj właściwego argumentu dlamenu_icon
: Ddashicon-groups
data:image/svg+xml;base64,
.'none'
aby pozostawićdiv.wp-menu-image
puste, dzięki czemu można dodać ikonę za pomocą CSS.źródło
svg-painer.js
podstawowa biblioteka js używana do obsługi zmiany kolorów może być bardzo czasochłonna, jeśli ikona jest bardziej „złożona” niż standardowe dashicony. * Trzecia opcja (pusta ikona) jest ważna nie tylko dla WP 3.8+, ale od dłuższego czasu ... i używanie css jest czymś, czego chcę uniknąć (jak na pytanie). Więc +1 za zebranie wszystkich opcji razem, ale myślę, że zaakceptowana odpowiedź już odpowiada na moje pytanie. PS z przyjemnością widzę ten diament w pobliżu twojego imienia :)svg-painter.js
pliku. Nie wiedziałem o tym, ponieważ jeszcze nie próbowałem.Odpowiadam sobie, bo dzisiaj zadałem sobie dwa pytania, które opublikowałem, i poświęciłem trochę czasu na znalezienie odpowiedzi. Po znalezieniu rozwiązania chcę je udostępnić, ale każde inne rozwiązanie jest bardzo doceniane i jestem gotowy zaakceptować każde rozwiązanie, które znalazłem lepsze niż moje. Doceniamy zmiany i ulepszenia mojego rozwiązania, a także zachęcamy.
Edytować
Po odpowiedzi Rarst dokonałem edycji kodu. Teraz funkcja korzysta ze standardowych klas dashicons, ale umożliwia także określenie
menu_icon
adresu URL starego stylu w argumencie i zupełnie nowej klasy dashicons wmenu_dashicon
argumencie.Przepływ pracy
Po pierwsze, pomyślałem, że
register_post_type
uruchamia akcję,registered_post_type
która przechodzi do funkcji przechwytujących, do których przekazywane są argumentyregister_post_type
, bez ich filtrowania, więc możliwe jest tworzenie niestandardowych argumentów dla tych funkcji.Zdecydowałem więc przekazać argument,
'menu_dashicon'
aby przekazać niestandardowy dashicon.Potem pomyślałem o stworzeniu klasy, która słucha tego argumentu, zapisując ikonę w zmiennej klasy. Ta sama klasa może być odpowiedzialna przed
$menu
tablicę na odpowiednim haku i:'menu_icon'
i'menu_dashicon'
parametruTworzę kod w jednym pliku, w ten sposób można go łatwo włączyć do dowolnego motywu / wtyczki lub nawet użyć jako wtyczki MU, a następnie można użyć zupełnie nowego
'menu_dashicon'
argumentu w każdym zainstalowanym motywie i / lub wtyczce.Dodałem również minimalny nagłówek wtyczki, który pozwala używać go jako samodzielnej wtyczki, ale prawdopodobnie jest to mniej przydatny sposób użycia.
Jak używać
Wewnątrz
register_post_type
wystarczy przekazać'menu_dashicon'
argument z wartością klasy dashicon ( bez przedrostka „dashicons-”):To wszystko. Pobierz nazwę klasy ikony Dashicons ze swojej witryny .
Więc tutaj kod:
Jest również dostępny jako Gist
Dwa CPT: „Pomysły” i „Galeria” za pomocą Dashicons. Zwróć uwagę na automatyczną zmianę kolorów za pomocą różnych schematów kolorów administratora.
źródło
Po prostu dodałem tę linię do kodu, który rejestruje niestandardowy typ postu:
Oto pełny kod
Nie trzeba dodawać żadnych CSS.
źródło