Я хочу выполнить пользовательский код jquery, который показывает диалог входа в систему для пользователя, если он нажимает кнопку, а он не вошел в систему. Как я могу это сделать?
17
В случае, если вы хотите знать, вошел ли пользователь в текущий момент. Другие ответы проверяют, вошел ли пользователь в систему или нет, когда страница загружена, а не в тот момент, когда вы запускаете JavaScript. Например, пользователь мог войти в отдельную вкладку
Поместите это в свой 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
}
});
поместите это в ваши 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');
Проверьте
class
атрибут наbody
: Если тема используетbody_class()
тело, есть класс, названныйlogged-in
для пользователей, которые вошли в систему. Имейте в виду, что функцию можно использовать и для элементаhtml
.пример
Вы также можете просто использовать его
is_user_logged_in()
как условие для постановки в очередь или печати сценария.источник
logged-in
уроке. Просто нужно быть уверенным, что темы используютсяbody_class();
илиget_body_class();
В противном случае, это не супер надежное решение. Хотя я использую эти функции в своих темах, так что это хорошее решение для меня. Спасибо за простую идею.Пожалуйста, добавьте body_class () в ваше тело HTML
Это добавит
logged-in
для зарегистрированного пользователя, тогда вы можете использовать следующий код jquery для выполнения вашего пользовательского кода juqery только для зарегистрированного пользователя.источник
Другой пример, если вы хотите использовать его для вызовов AJAX.
источник
is_user_logged_in
он будет кэшироваться как ложный в DOM при достижении источника. Состояние пользователя должно быть абстрагировано в поток без кэширования через XHR при использовании CDN. Подход @Mridul Aggarwal работает, но с заголовками без кеша в ответе.Обратите внимание, что ни один из приведенных выше примеров не является надежным, если вы используете плагин кэширования страниц, тогда код в теге body будет статическим. Также есть простой способ сделать это (без дополнительного запроса к ajax, который не является оптимальным)
Если вы хотите проверить состояние пользователя, вошедшего в систему с помощью javascript, вы можете использовать этот код для установки cookie-файлов при входе пользователя в систему и удаления cookie-файлов при выходе из системы. Добавьте это например. к вашей теме functions.php
Тогда это простой тест cookie в javascript.
источник