Quero executar o código jquery personalizado que mostra a caixa de diálogo de login do usuário se ele clicar em um botão e ele não estiver conectado. Como eu poderia fazer isso?
17
Caso você queira saber se o usuário está logado no momento atual. As outras respostas verificam se o usuário está logado ou não quando a página carregou e não o momento em que você está executando o javascript. O usuário pode ter feito login em uma guia separada, por exemplo
Coloque isso no seu 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
}
});
coloque isso em suas funções.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');
Verifique o
class
atributo parabody
: Se o tema estiver usandobody_class()
o corpo, há uma classe nomeadalogged-in
para usuários que estão conectados. Lembre-se de que a função também pode ser usada no elementohtml
.Exemplo
Você também pode usar apenas
is_user_logged_in()
como condição para enfileirar ou imprimir o script.fonte
logged-in
aula. Só precisa ter certeza de que os temas usambody_class();
ouget_body_class();
Caso contrário, essa não é uma solução super confiável. Embora eu use essas funções nos meus temas, essa é uma boa solução para mim. Obrigado pela idéia simples.Adicione body_class () ao seu corpo html
Isso adicionará
logged-in
ao usuário logado e você poderá usar o seguinte código jquery para executar seu código juqery personalizado apenas para o usuário logado.fonte
Outro exemplo, caso você queira usá-lo para chamadas AJAX.
fonte
is_user_logged_in
será armazenada em cache como DOM no DOM quando a origem for atingida. O estado do usuário deve ser abstraído para um thread sem cache via XHR ao usar uma CDN. A abordagem de @Mridul Aggarwal funciona, mas com cabeçalhos sem cache na resposta.Observe que nenhum dos exemplos acima é confiável, caso você use um plug-in de cache de página, o código na tag body será estático. Também existe uma maneira simples de fazer isso (sem consulta extra ao ajax que não seja ideal)
Se você deseja testar o estado de logon do usuário com javascript, pode usar este código para definir o cookie quando o usuário efetuou login e excluir o cookie quando o usuário efetuou logout. Adicione isto, por exemplo. ao seu tema functions.php
Então é um teste simples de cookie em javascript.
fonte