Ich möchte benutzerdefinierten Abfragecode ausführen, der dem Benutzer den Anmeldedialog anzeigt, wenn er auf eine Schaltfläche klickt und nicht angemeldet ist. Wie kann ich das tun?
17
Wenn Sie wissen möchten, ob der Benutzer gerade angemeldet ist. Die anderen Antworten prüfen, ob der Benutzer angemeldet ist oder nicht, wenn die Seite nicht geladen wurde, wenn Sie das Javascript ausführen. Der Benutzer könnte sich beispielsweise in einer separaten Registerkarte angemeldet haben
Tragen Sie dies in Ihr Javascript ein
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
}
});
Gib das in deine functions.php ein
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');
Überprüfen Sie das
class
Attribut fürbody
: Wenn das Thema verwendet wird, verfügtbody_class()
der Textkörper über eine Klasse mit Namenlogged-in
für angemeldete Benutzer. Beachten Sie, dass die Funktion auch für das Element verwendethtml
werden kann.Beispiel
Sie können
is_user_logged_in()
das Skript auch nur als Bedingung zum Einreihen oder Drucken verwenden.quelle
logged-in
Klasse zu überprüfen . Müssen nur sicher sein , dass Themen verwendenbody_class();
oderget_body_class();
andernfalls , dass kein Super zuverlässige Lösung ist. Obwohl ich diese Funktionen in meinen Themen verwende, ist das eine gute Lösung für mich. Danke für die einfache Idee.Bitte fügen Sie body_class () zu Ihrem HTML-Body hinzu
Dies wird
logged-in
für angemeldete Benutzer hinzugefügt. Anschließend können Sie den folgenden jquery-Code verwenden, um Ihren benutzerdefinierten juqery-Code nur für angemeldete Benutzer auszuführen.quelle
Ein weiteres Beispiel, falls Sie es für AJAX-Aufrufe verwenden möchten.
quelle
is_user_logged_in
wird es im DOM als false zwischengespeichert, wenn der Ursprung erreicht wird. Der Benutzerstatus sollte bei Verwendung eines CDN über XHR an einen No-Cache-Thread abstrahiert werden. @Mridul Aggarwals Ansatz funktioniert, die Antwort enthält jedoch keine Cache-Header.Bitte beachten Sie, dass keines der obigen Beispiele zuverlässig ist, wenn Sie ein Seiten-Cache-Plugin verwenden. Der Code im Body-Tag ist dann statisch. Es gibt auch eine einfache Möglichkeit, dies zu tun (ohne zusätzliche Ajax-Abfrage, die nicht optimal ist).
Wenn Sie den Status des angemeldeten Benutzers mit Javascript testen möchten, können Sie diesen Code verwenden, um das Cookie beim Anmelden des Benutzers zu setzen und das Cookie beim Abmelden des Benutzers zu löschen. Fügen Sie dies zB. zu deinem Theme functions.php
Dann ist es ein einfacher Test von Cookies in Javascript.
quelle