Выйдите из системы и перенаправьте идентификатор пользователя WordPress, не обновляя страницу.Jquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Гость
 Выйдите из системы и перенаправьте идентификатор пользователя WordPress, не обновляя страницу.

Сообщение Гость »


Я разрабатываю функциональность, запускаемую кнопкой $('.disconnect-classroom-button'). При нажатии я выхожу из системы всех членов этой группы, и выход из системы выполняется успешно (но пользователю приходится щелкнуть или обновить страница вступила в силу, даже если я использую ajax), это не тот результат, который мне нужен: вот функции обратного вызова PHP:

// Функция PHP для отправки идентификаторов студентов функция send_students_ids() { if (isset($_POST['payload']) && $_POST['payload'] == 'disconnect_classroom') { // Проверка одноразового номера check_ajax_referer('kwf_nonce', 'безопасность'); $group_type = bp_groups_get_group_type(bp_get_current_group_id()); $students_ids = массив(); $group_members = groups_get_group_members(массив( 'group_id' => bp_get_current_group_id(), 'exclude_admins_mods' => правда, 'exclude_banned' => правда, 'исключить' => ложь, 'group_role' => массив('член'), 'search_terms' => ложь, )); foreach ($group_members['members'] как $member) { $students_ids[] = $member->ID; } // Отправляем число студентов в функцию JavaScript wp_send_json_success(array('students_ids' => $students_ids)); } } // Добавляем хук пользовательского действия в хук wp_ajax_ add_action('wp_ajax_send_students_ids', 'send_students_ids'); // Функция PHP для обработки выхода из системы с использованием Student_ids функция kwf_ajax_logout_group() { if (isset($_POST['payload']) && $_POST['payload'] == 'disconnect_classroom') { // Проверка одноразового номера check_ajax_referer('kwf_nonce', 'безопасность'); // Получаем идентификаторы пользователей из данных POST $user_ids = $_POST['user_ids']; // Проходим по идентификаторам пользователей и выходим из системы foreach ($user_ids как $user_id) { если (is_user_logged_in($user_id)) { // Получаем все сеансы пользователя с идентификатором $user_id $sessions = WP_Session_Tokens::get_instance($user_id); // У нас есть сессии, уничтожьте их все! $sessions->destroy_all(); } } // Отправляем успешный ответ wp_send_json_success(массив( 'message' => 'Вы выйдете из системы.', 'user_ids' => $user_ids, 'redirect_url' => home_url(), // Устанавливаем URL-адрес перенаправления )); // Перенаправление на домашнюю страницу после выхода из системы // Выход; } } а вот обработчик событий в ajax: (ставится в очередь только для страниц одной группы):

if(function_exists('bp_is_groups_comComponent') && bp_is_groups_comComponent()) { // одна группа wp_enqueue_script('kwf-bp-groups-js', KWF_JS_PATH . 'bp-groups.js', массив('jquery'), KWF_THEME_VERSION, true);} $('.disconnect-classroom-button').hover( функция () { // Наведите указатель мыши: измените значок на bb-icon-file-export с легким переходом $(this).find('i').removeClass('bb-icon-file-import').addClass('bb-icon-file-export').css('transition', 'все 0,3 секунды легко- вход-выход'); }, функция () { // Наведение курсора: изменение значка обратно на bb-icon-file-import с плавным переходом $(this).find('i').removeClass('bb-icon-file-export').addClass('bb-icon-file-import').css('transition', 'все 0,3 секунды легко- вход-выход'); } ).on('клик', функция (e) { е.preventDefault(); кнопка вар = $(это); var nonce = $(this).data('security'); Нпрогресс.старт(); NProgress.set(0.4); // Приращение вар интервал = setInterval (функция () { Нпрогресс.вкл(); }, 1000); // Шаг 1. Отправка идентификаторов участников $.ajax({ тип: «пост», Тип данных: 'JSON', URL: аяксурл, данные: { действие: 'send_students_ids', полезная нагрузка: 'disconnect_classroom', безопасность: одноразовый, send_members: true, // Добавляем флаг, указывающий идентификаторы отправляющих участников }, успех: функция (ответ) { // Проверяем, была ли отправка идентификаторов участников успешной если (ответ.успех) { варmemberIds = response.data.students_ids; // Шаг 2: Выход из процесса $.ajax({ тип: «пост», Тип данных: 'JSON', URL: аяксурл, заголовки: { прагма: "без кэша", "cache-control": "без кэша" }, данные: { действие: 'kwf_ajax_logout_group', полезная нагрузка: 'disconnect_classroom', безопасность: одноразовый, user_ids:memberIds, // Включаем идентификаторы участников для выхода из системы }, успех: функция (logoutResponse) { // Проверяем, прошел ли выход из системы если (logoutResponse.success) { button.text(kwf_translate.disconnected_classroom); НПрогресс.done(); очиститьИнтервал (интервал); // Шаг 3: Отправка сообщения об успехе jQuery(документ).trigger( 'bb_trigger_toast_message', [ '', '' + kwf_translate.disconnected_message + '', 'Информация', нулевой, истинный ] ); // Запускаем пользовательское событие для успешного выхода из системы console.log(logoutResponse.data) // Отправляем пользовательское событие после успешного выхода из системы var logoutEvent = новый CustomEvent('logoutSuccess', { деталь: { сообщение: «Вы выйдете из системы». } }); window.dispatchEvent(logoutEvent); // Уведомляем пользователя в его браузере /* console.log(logoutResponse.data.redirect_url) */ /* setTimeout(() => { button.text(kwf_translate.disconnect_classroom); }, 60000); */ } еще { // Обработка ошибки выхода из системы console.error('Не удалось выйти из системы:', logoutResponse.data); } }, ошибка: функция (ошибка) { // Обработка ошибки выхода из системы console.error('Ошибка выхода:', error); } }); } еще { // Обработка ошибки отправки идентификаторов участников console.error('Ошибка отправки идентификаторов участников:', response.data); } }, ошибка: функция (ошибка) { // Обработка ошибки отправки идентификаторов участников console.error('Ошибка отправки идентификаторов участников:', error); } }); }); и есть global.js, который, я думаю, мне следует использовать для обработки выхода из системы

Что я хочу: **Автоматически выходить из системы пользователя с $user_id и переходить на домашнюю страницу, независимо от его текущей страницы. Это должно происходить без необходимости обновления страницы или нажатия кнопки, и это должно применяться к пользователю с $user_id, а не к человеку, который нажал кнопку. **
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Jquery»