Wiem, że możesz dodać klasę w niestandardowych opcjach menu, ale dodaje ją ona do LI przed A. Chcę zastosować klasę bezpośrednio do tego konkretnego A, a nie do całego LI.
Więc zamiast wyjścia
<li id="menu-item-51" class="NEWCLASS menu-item menu-item-type-custom menu-item-51"><a href="#">Link</a> </li>
Ja też chcę, żeby tak było.
<li id="menu-item-51" class="menu-item menu-item-type-custom menu-item-51"><a href="#" class="NEWCLASS">Link</a></li>
Jakieś pomysły?
.class
na.class a
?<li>
elementu zawierającego . Jeśli masz podmenu poniżej tego konkretnego elementu, nie ma problemu, możesz rozwiązać ten problem w CSS (w razie potrzeby mogę podać przykłady).Odpowiedzi:
możesz użyć
nav_menu_css_class
filtraKorzystając z tego przedmiotu $ możesz spełnić dowolne warunki. a to doda klasę do konkretnego li i możesz nadać temu stylowi znacznik:
źródło
get_page_template_slug
do pracy. Jakieś pomysły?Znalazłem rozwiązanie na tej stronie za pomocą niestandardowego chodzika .
Dwa kroki: zastąp domyślny kod wp_nav_menu edytowanym, a następnie dodaj kod do functions.php motywu.
Najpierw zamień domyślny kod wp_nav_ na następujący (kod jest kopiowany z powyższej strony):
Następnie dodaj następujący kod do functions.php. W ten sposób możesz faktycznie dodać klasę do łączy menu:
Pod koniec kodu znajduje się kilka wierszy rozpoczynających się od $ item_output. W szczególności chcesz obejrzeć ten kawałek:
Ponieważ ten wiersz określa dane wyjściowe dla początku html łącza. Jeśli zmienisz to na coś takiego:
Następnie wszystkie linki w menu będą miały dodane class = "abc".
To powiedziawszy, nie pozwala na niestandardową klasę dla każdego linku (a przynajmniej nie wiem, jak go kodować). To dla mnie problem.
Dla tych, którzy pytają, dlaczego chcesz to zrobić? Chcę, aby moje linki menu były otwarte lightboxy (a konkretnie colorboxy) i do tego wymagają klas na linkach. Na przykład:
Czy jest jakiś sposób na dynamiczne generowanie klas, takich jak „lightbox1” dla pierwszego łącza, „lightbox2” dla drugiego łącza i tak dalej?
źródło
ROZWIĄZANY!!!! Musiałem to rozgryźć, aby element menu zawierał link do wbudowanego HTML w fancyboksie. Wklej następujący kod do funkcji theme.php:
Następnie ... na karcie Menu pulpitu nawigacyjnego WP utwórz niestandardowy link i dodaj go do swojego menu. Na górze, gdzie jest napisane Opcje ekranu, upewnij się, że masz zaznaczoną opcję „Powiązanie linków (XFN)”. Doda to pole do niestandardowego elementu menu. Wpisz „fancybox” (bez cudzysłowów) w polu i zapisz menu.
Funkcja wyszukuje połączenie z menu nawigacyjnym, a następnie znajduje gdziekolwiek masz a
rel="fancybox"
i zamienia je narel="fancybox" class="fancybox"
. Możesz zastąpić fancybox dowolną klasą, którą musisz dodać do pozycji menu. Gotowe i gotowe!źródło
Obecne odpowiedzi wydają się nie rozpoznawać, że pytanie polega na tym, jak dodać klasę do
a
elementu, a nie doli
elementu, lub są zbyt skomplikowane. Oto proste podejście wykorzystującenav_menu_link_attributes
filtr, który pozwala kierować reklamy na określone menu na podstawie informacji o ślimaku i na określony link do strony w tym menu na podstawie jego identyfikatora. Możesz var_dump $ args i $ item, aby uzyskać więcej sposobów na stworzenie swojego stanu.źródło
if
go, abyif ($args->theme_location == 'footer-menu' )
zerknął na menu według jego lokalizacji, i wszystko działa świetnieWiem, że udzielono odpowiedzi dawno temu, ale tak jak ogólne informacje, znalazłem, jak dodać klasę do każdej pozycji menu indywidualnie, korzystając z opcji „Ekran” strony administracyjnej WordPress dla menu niestandardowych.
źródło
Musiałem ostatnio zrobić coś podobnego i wymyśliłem inny sposób. Musiałem dodać podobną klasę dla wtyczki lightbox Nivo. Dodałem więc „nivo” do atrybutu rel („Relacja łącza (XFN)”), a następnie do
nav_menu_link_attributes
filtru.źródło
W górnej części
Appearance -> Menus
strony kliknij, aby rozwinąćScreen Options
, zaznacz pole wyboruCSS Classes
. Teraz, gdy rozwiniesz każdy z dodanych elementów menu, zobaczyszCSS Classes (optional)
pole.źródło