Jestem na Twitterze Bootstrap i muszę dodać atrybut data-toggle = "modal" do znacznika łącza menu. Po przeszukaniu większości odniesień do wszystkich wyników chodzę po rozwijanych menu Twitter Bootstrap, jednak to menu nie ma rozwijanych menu i muszę tylko dodać konkretny atrybut.
Następnie znalazłem to: dodaj niestandardowe atrybuty do elementów menu bez wtyczki, co jest bardzo pomocne, ponieważ pojawia się w WordPress 3.6+, nie musimy już robić długich skomplikowanych walkerów i zamiast tego możemy użyć tego: http://codex.wordpress.org/Plugin_API / Filter_Reference / nav_menu_link_attributes
Jednak od tego momentu ten interfejs API jest zupełnie pusty i nie zawiera żadnych przykładów, a ponieważ jest tak nowy, jest bardzo mało odniesień do niego w Google.
Najpierw spróbowałem:
add_filter( 'nav_menu_link_attributes', 'mywp_contact_menu_atts', 10, 3 );
function pb_contact_menu_atts( $atts, $item, $args )
{
// inspect $item, then …
$atts['data-toggle'] = 'modal';
return $atts;
}
i to działa, jednak zgodnie z oczekiwaniami dodaje atrybut do wszystkich tagów w menu. Próbuję więc wymyślić, jak celować w jeden element menu za pomocą # menu-item-7857 a lub podobnego.
Czy ktoś wie, gdzie znaleźć przykład kierowania na element menu lub jest w stanie określić, w jaki sposób oprzeć się na informacjach zawartych w powyższym odnośniku do interfejsu API?
Zauważyłem, że znalazłem następujący przykład, ale dotyczy on tylko przedmiotów, które mają dzieci, co nie pomaga, ale może być w dobrym kierunku:
add_filter('nav_menu_link_attributes', function($atts, $item, $args) {
if ( $args->has_children )
{
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
}
return $atts;
}, 10, 3);
AKTUALIZACJA - jedyna odpowiedź poniżej brzmi, jakby była na coś, ale nie była w stanie określić, jak faktycznie znaleźć numer, na który można kierować mój konkretny link i gdzie / jak dodać ten warunek w działającym przykładzie. Dodał komentarz, ale nie odpowiedział. Od około 18 dni pomyślałem, że zobaczę, czy nagroda pomogłaby.
Kiedy patrzę na kod linku, na który chcę kierować:
<li id="menu-item-7858" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7858"><a href="#" data-toggle="modal">Chat</a></li>
Widzę liczbę 7858, więc myślę, że może właśnie na tę liczbę powinienem być kierowany.
Ale kiedy próbuję na przykład:
add_filter( 'nav_menu_link_attributes', 'my_chat_menu_atts', 10, 3 );
function my_chat_menu_atts( $atts, $item, $args ) {
if ( 7857 == $item['ID'] ) {
// inspect $item, then …
$atts['onclick'] = 'SnapEngage.startLink();';
return $atts;
}
}
Dodając jednak, że jeśli oświadczenie jeden komentator zasugerował, otrzymuję następujący błąd:
Fatal error: Cannot use object of type WP_Post as array
Zakładam, że więcej kodu jest wymagane, ale zagubione. Przypominamy, że bez instrukcji if działa, jednak jest kierowane na wszystkie łącza, a nie na jedno łącze, na które chcę kierować.
Odpowiedzi:
W szczególności edytuj kod podany w pierwotnym pytaniu:
źródło
array_key_exists()
Drugi
$item
argument, który jest udostępniany funkcji filtrowania, zawiera obiekt pozycji menu. Jeśli zostanie zrzucony, wygląda mniej więcej tak:Aby wybrać konkretny element menu, musisz sformułować swój stan i porównać go z danymi dostępnymi na przykład w obiekcie
if ( 2220 == $item['ID'] )
źródło
$item
jest obiektem, a nie tablicą; zmienić$item['ID']
TO$item->ID
.Dlaczego nie podejdziesz do tego problemu z innej strony? Zamiast próbować kierować element menu o id == ?? który może się w pewnym momencie zmienić (element menu, a nie identyfikator), użyj obszaru administracyjnego WP, aby dodać niestandardową klasę do elementu menu, na który chcesz kierować reklamy. Następnie użyj tej klasy w JavaScript, aby uruchomić potrzebne informacje:
Mój javascript nie jest gwarantowany. Jeśli nie używasz jQuery, można spróbować to .
źródło
Chciałem dodać litery danych do niestandardowego menu, które utworzyłem w WordPress.
Kroki, które wybrałem, to:
Oto mój kod.
Mam nadzieję, że to ci pomoże.
źródło