Функция wp_logout не выполнена

Вопрос или проблема

Контекст: пользовательский плагин

Моя цель: мне нужно перенаправить пользователя на другой сайт после выхода

Я написал следующее

error_log("тест ведения ошибок");

add_action('wp_logout', function () {
  error_log("do_action wp_logout_called");
});

add_action('wp_logout', auto_redirect_user_after_logout()
  {
    wp_redirect('https://www.google.it');
    exit();
  };

В error_log я вижу тест ведения ошибок, значит, плагин загружен и ведение ошибок работает

Но

  1. Я никогда не вижу do_action wp_logout_called, он вообще не записывается
  2. Перенаправление не работает (пользователь возвращается в WordPress, нет ошибки, нет перенаправления)

Что я делаю не так?

Ответ или решение

Проблема с выполнением функции wp_logout в пользовательском плагине

Введение

Ваша проблема связана с тем, что обработчик события wp_logout не выполняется должным образом в вашем пользовательском плагине. Вы хотите перенаправить пользователя на другой сайт после его выхода, но у вас возникли трудности с реализацией этой функции. Давайте разберем ваш код, выявим ошибки и предложим решения.

Анализ кода

Ваша реализация выглядит следующим образом:

error_log("test of error logging");

add_action('wp_logout', function () {
  error_log("do_action wp_logout_called");
});

add_action('wp_logout', auto_redirect_user_after_logout()
  {
    wp_redirect('https://www.google.it');
    exit();
  };
  1. Заметка о логировании: Вы успешно добавили логирование, что позволяет понять, выполняется ли ваша часть кода. Однако логирование do_action wp_logout_called не срабатывает, что указывает на проблемы в обработчике.

  2. Ошибки в коде:

    • Вы определяете анонимную функцию, но не используете ее корректно. Анонимные функции в PHP следует использовать с use для доступа к переменным или передавать их как параметр.
    • Код для wp_logout должен быть обернут в правильный синтаксис, у вас использована неверная конструкция.

Исправление кода

Для исправления ваших проблем, предлагаю использовать следующий рабочий код:

error_log("test of error logging");

add_action('wp_logout', function () {
  error_log("do_action wp_logout_called");
  // Перенаправление после выхода
  wp_redirect('https://www.google.it');
  exit();
});

Пояснение изменений

  1. Правильное использование анонимной функции: Я объединил логику ведения журнала и перенаправления в одной анонимной функции, которая будет вызвана при выходе пользователя.

  2. Удаление лишнего вызова: Вам не нужно добавлять второй вызов add_action, вы можете просто включить все действия в одну функцию.

Проверка работы

Теперь, когда вы внесли изменения, важно протестировать, выполняется ли обработчик. Для этого:

  • Убедитесь, что плагин активирован.
  • Выйдите из системы и проверьте, видите ли вы записи в error_log. Если вы видите запись do_action wp_logout_called, функция сработала правильно.
  • После выхода вы должны быть перенаправлены на https://www.google.it.

Заключение

Эти изменения должны помочь вам успешно выполнить задачу. Убедитесь, что вы всегда используете правильный синтаксис и структуру функций в ваших плагинах WordPress. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью. Успехов в разработке!

Оцените материал
Добавить комментарий

Капча загружается...