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ć.