Czy istnieje sposób na umieszczenie javascript w części URL elementu menu WordPress? Mam funkcję czatu na żywo na swojej stronie i powinienem umieścić ten kod na stronie, aby utworzyć link do otwarcia czatu na żywo (jak sugerowano tutaj).
<!-- BEGIN OLARK CHAT LINK -->
<a href="javascript:void(0);" onclick="olark('api.box.expand')">
Click here to chat!
</a>
<!-- END OLARK CHAT LINK -->
Klient chce linku na pasku nawigacyjnym narzędzia, który został utworzony przy użyciu menu WordPress na pulpicie nawigacyjnym WordPress. Ale kiedy kopiuję i wklejam javascript:void(0);" onclick="olark('api.box.expand')
do pola URL w desce rozdzielczej WordPress, po prostu znika, a link pozostaje nieaktywny.
Coś, co przeczytałem, mówiło, że może mógłbym umieścić niestandardową klasę na odnośnym łączu, a następnie napisać funkcję JavaScript, która będzie uruchamiana po kliknięciu łącza z tą klasą. Próbowałem tego jednak i nie mogłem zmusić go do działania. Nie znam dużo Javascript, więc możliwe, że napisałem go całkowicie źle.
Czy ktoś wie jak to zrobić? Chciałbym to zrobić bez użycia wtyczki.
źródło
onclick
atrybucie do wykonywania javascript.click()
wydarzenie jQuerysonclick
atrybucie. Podniosę wzrok.click()
.Odpowiedzi:
Dobrze, że to działa. Jeśli jest to dla klienta lub chcesz po prostu czystszego kodu, możesz to zrobić zgodnie z sugestią @Tom J Nowell.
Dodaj niestandardowy element menu, połącz go nigdzie lub nigdzie. Znajdź identyfikator elementu menu (każdy element ma jeden), a następnie wybierz ten identyfikator za pomocą jQuery.
W ten sposób za każdym razem, gdy użytkownik kliknie,
menu-item
skrypt powyżej zostanie uruchomiony. Możesz kolejkować skrypt jquery za pośrednictwem functions.php.Aktualizacja:
Upewnij się, że Twój plik olark.js się ładuje. Jeśli dodajesz go do stopki lub nagłówka, sprawdź swoją stronę i upewnij się, że skrypt tam jest. Upewnij się również, że nie występują błędy w konsoli przeglądarki.
Zawiń js gotowym dokumentem, aby skrypt wykonał się we właściwym czasie:
Fakt, że link się nie ładuje oznacza, że coś jest nie tak z samym skryptem lub skrypt nie ładuje się wcale.
źródło
#
(ponieważ właśnie tam ustawiłem go na pulpicie nawigacyjnym Wordpress). Oto, co umieściłem w olark.js:$("#menu-item-38872").on("click", function(e){ e.preventDefault(); // olark code here olark('api.box.expand'); });
Co robię źle?jQuery(document).ready(function($) {
Załatwiło sprawę! Dzięki, @gdaniel!Rozwiązanie nr 1 (nie idealne, ale działa):
Rozwiązanie nr 2 (idealne):
Przy pomocy powyższych komentarzy, oto rozwiązanie, które działało dla mnie. Utworzyłem nowy plik o nazwie olark.js i umieściłem w nim następujący kod:
Następnie umieściłem w skrypcie kolejkę skryptu w pliku functions.php następującym kodem:
Jeśli to nie działa, upewnij się, że porządkujesz skrypt poprawnie. Używam motywu potomnego, więc musiałem go użyć
get_stylesheet_directory_uri()
zamiastget_template_directory_uri()
.źródło
Myślę, że istnieje „bardziej niezawodna” opcja. Poleganie na numerze pozycji menu nie jest gwarantowane, jeśli na przykład migrujesz swój kod z wersji programistycznej do produkcyjnej. Jeśli zmienisz liczbę w ustawienie, będzie ona coraz lepsza, ale nadal niezbyt dobra.
Alternatywą może być link do nieistniejącej kotwicy, takiej jak #olark, z pozycji menu. Można to ustawić za pomocą interfejsu użytkownika i jest niezawodny w różnych środowiskach. Następnie oddzielny skrypt powinien obserwować zmianę skrótu (na pasku adresu przeglądarki) i działać odpowiednio.
Prosty przykład skryptu do kawy, który kompiluje się w javascript, który nasłuchuje hashchange:
@showLogin
to funkcja wyświetlająca okno dialogowe umożliwiające zalogowanie się, jeśli skrót jest równy „#login”.[edytuj] Zabawne, hash w adresie nie zmienia się po kliknięciu pozycji menu. Jest to nieoczekiwane i może być spowodowane innym skryptem uniemożliwiającym zdarzenie domyślne. Musiałem więc dodać kolejną linię, aby zmienić położenie okna w odpowiedzi na kliknięcie linku:
[/edytować]
źródło
Możesz użyć tego do functions.php, aby dodać skrypt dodatkowy w elemencie menu nawigacyjnego
źródło