Quiero ejecutar un código jquery personalizado que muestre el diálogo de inicio de sesión al usuario si hace clic en un botón y no está conectado. ¿Cómo podría hacer eso?
17
En caso de que desee saber si el usuario ha iniciado sesión en el momento actual. Las otras respuestas verifican si el usuario ha iniciado sesión o no cuando la página se cargó, no cuando está ejecutando JavaScript. El usuario podría haber iniciado sesión en una pestaña separada, por ejemplo
Pon esto en tu 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
}
});
pon esto en tus funciones.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 el
class
atributo parabody
: Si el tema está usandobody_class()
el cuerpo tiene una clase nombradalogged-in
para los usuarios que han iniciado sesión. Tenga en cuenta que la función también se puede usar en el elementohtml
.Ejemplo
También puede usarlo
is_user_logged_in()
como condición para poner en cola o imprimir el guión.fuente
logged-in
clase. Solo tengo que estar seguro de que los temas usanbody_class();
o de loget_body_class();
contrario, esa no es una solución súper confiable. Aunque utilizo esas funciones en mis temas, es una buena solución para mí. Gracias por la simple idea.Agregue body_class () a su cuerpo html
Esto se agregará
logged-in
para el usuario registrado, luego puede usar el siguiente código jquery para ejecutar su código juqery personalizado solo para el usuario registrado.fuente
Otro ejemplo, en caso de que quiera usarlo para llamadas AJAX.
fuente
is_user_logged_in
se almacenará en caché como falso en el DOM cuando se golpee el origen. El estado del usuario debe extraerse a un subproceso sin caché a través de XHR cuando se utiliza un CDN. El enfoque de @Mridul Aggarwal funciona pero con encabezados sin caché en la respuesta.Tenga en cuenta que ninguno de los ejemplos anteriores es confiable en caso de que use un complemento de almacenamiento en caché de página, entonces el código en la etiqueta del cuerpo será estático. También hay una manera simple de hacer esto (sin consulta adicional a ajax que no es óptima)
Si desea probar el estado de inicio de sesión del usuario con javascript, puede usar este código para configurar la cookie cuando el usuario inició sesión y eliminar la cookie cuando el usuario cerró la sesión. Agregue esto, por ejemplo. a su tema functions.php
Entonces es una prueba simple de cookie en javascript.
fuente