Je veux exécuter un code jquery personnalisé qui affiche la boîte de dialogue de connexion à l'utilisateur s'il clique sur un bouton et qu'il n'est pas connecté. Comment pourrais-je faire cela?
17
Dans le cas où vous souhaitez savoir si l'utilisateur est connecté au moment actuel. Les autres réponses vérifient si l'utilisateur est connecté ou non lorsque la page est chargée, pas au moment où vous exécutez le javascript. L'utilisateur aurait pu se connecter dans un onglet séparé par exemple
Mettez ceci dans votre 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
}
});
mettez ceci dans vos fonctions.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');
Vérifiez l'
class
attribut pourbody
: Si le thème utilisebody_class()
le corps a une classe nomméelogged-in
pour les utilisateurs qui sont connectés. Soyez conscient que la fonction peut également être utilisée sur l'élémenthtml
.Exemple
Vous pouvez également simplement l'utiliser
is_user_logged_in()
comme condition pour mettre en file d'attente ou imprimer le script.la source
logged-in
cours. Il suffit de s'assurer que les thèmes utilisentbody_class();
ouget_body_class();
sinon, ce n'est pas une solution super fiable. Bien que j'utilise ces fonctions dans mes thèmes, c'est donc une bonne solution pour moi. Merci pour l'idée simple.Veuillez ajouter body_class () à votre corps html
Cela ajoutera
logged-in
pour l'utilisateur connecté, vous pouvez utiliser le code jquery suivant pour exécuter votre code juqery personnalisé uniquement pour l'utilisateur connecté.la source
Un autre exemple, au cas où vous voudriez l'utiliser pour des appels AJAX.
la source
is_user_logged_in
sera mis en cache comme faux dans le DOM lorsque l'origine est atteinte. L'état utilisateur doit être extrait d'un thread sans cache via XHR lors de l'utilisation d'un CDN. L'approche de @Mridul Aggarwal fonctionne mais avec des en-têtes sans cache dans la réponse.Veuillez noter qu'aucun des exemples ci-dessus n'est fiable si vous utilisez un plugin de mise en cache de page, alors le code dans la balise body sera statique. Il existe également un moyen simple de le faire (sans requête supplémentaire pour ajax, ce qui n'est pas optimal)
Si vous souhaitez tester l'état de connexion de l'utilisateur avec javascript, vous pouvez utiliser ce code pour définir un cookie lorsque l'utilisateur se connecte et supprimer le cookie lorsque l'utilisateur se déconnecte. Ajoutez ceci par exemple. à votre thème functions.php
Ensuite, c'est un simple test de cookie en javascript.
la source