Chcę wykonać niestandardowy kod jquery, który pokazuje użytkownikowi okno logowania, jeśli kliknie przycisk i nie będzie zalogowany. Jak to zrobić?
18
Jeśli chcesz wiedzieć, czy użytkownik jest zalogowany w danym momencie. Inne odpowiedzi sprawdzają, czy użytkownik jest zalogowany, czy nie, gdy strona jest ładowana, a nie czas, w którym uruchamiany jest JavaScript. Użytkownik mógł na przykład zalogować się w osobnej zakładce
Umieść to w swoim javascript
var data = {
action: 'is_user_logged_in'
};
jQuery.post(ajaxurl, data, function(response) {
if(response == 'yes') {
// user is logged in, do your stuff here
} else {
// user is not logged in, show login form here
}
});
umieść to w pliku functions.php
function ajax_check_user_logged_in() {
echo is_user_logged_in()?'yes':'no';
die();
}
add_action('wp_ajax_is_user_logged_in', 'ajax_check_user_logged_in');
add_action('wp_ajax_nopriv_is_user_logged_in', 'ajax_check_user_logged_in');
Sprawdź, czy
class
dla atrybutubody
: jeśli kompozycja korzystabody_class()
z treści, ma klasę nazwanąlogged-in
dla zalogowanych użytkowników. Pamiętaj, że funkcji można również użyć w elemenciehtml
.Przykład
Możesz także użyć
is_user_logged_in()
jako warunku do kolejkowania lub drukowania skryptu.źródło
logged-in
klasy. Musisz tylko upewnić się, że motywy używająbody_class();
lubget_body_class();
W przeciwnym razie, to nie jest super niezawodne rozwiązanie. Chociaż używam tych funkcji w moich motywach, więc jest to dla mnie dobre rozwiązanie. Dzięki za prosty pomysł.Dodaj body_class () do treści HTML
Spowoduje to dodanie
logged-in
zalogowanego użytkownika, a następnie można użyć następującego kodu jquery do wykonania niestandardowego kodu użytkownika tylko dla zalogowanego użytkownika.źródło
Kolejny przykład, na wypadek gdybyś chciał użyć go do wywołań AJAX.
źródło
is_user_logged_in
w DOM będzie buforowany jako fałsz po uderzeniu pochodzenia. Stan użytkownika powinien zostać wyodrębniony do wątku bez pamięci podręcznej przez XHR podczas korzystania z CDN. Podejście @Mridul Aggarwal działa, ale w odpowiedzi zawiera nagłówki bez pamięci podręcznej.Pamiętaj, że żaden z powyższych przykładów nie jest wiarygodny, jeśli używasz wtyczki buforującej strony, kod w tagu body będzie statyczny. Jest też prosty sposób, aby to zrobić (bez dodatkowego zapytania do ajax, które nie jest optymalne)
Jeśli chcesz przetestować stan zalogowanego użytkownika za pomocą javascript, możesz użyć tego kodu, aby ustawić plik cookie podczas logowania użytkownika i usunąć plik cookie, gdy użytkownik się wylogował. Dodaj to np. do motywu funkcji.php
To jest prosty test ciasteczka w javascript.
źródło