Другой пользовательский код на установке WP препятствует перенаправлению WP Discourse обратно на форум

Мы используем DiscourseConnect через WP Discourse и внимательно изучили отличный руководство по настройке здесь, на meta. Однако после появления страницы входа в WordPress нас перенаправляет на страницу профиля WordPress вместо Discourse. Мы используем WordPress версии 6.0.1 и WP Discourse версии 2.4.5.

  1. Перейдите на страницу форума.
  2. Нажмите «Войти».
  3. Вас перенаправляет на сайт WordPress /wp-login.php.
  4. Введите данные для входа в WordPress.
  5. Вас перенаправляет на /wp-admin/profile.php.
  6. Если вы снова введёте URL форума, вас снова перенаправит на страницу входа.

Мы трижды проверили URL-адреса и секретные ключи, и всё в порядке. Пользователи существуют в WordPress, и их адреса электронной почты подтверждены. Есть ли другие идеи, куда стоит посмотреть?

Просмотр логов WP Discourse или административных логов Discourse не выявил ничего примечательного, но я привожу их здесь:

wp-discourse-logs-metafile-2022-08-15-2022-08-29.txt (1.6 KB)
wp-discourse-2022-08-29-1-log.txt (8.5 KB)

Вывод из /logs в Discourse:

Verbose SSO log: Started SSO process

add_groups: 
admin: 
moderator: 
avatar_force_update: 
avatar_url: 
bio: 
card_background_url: 
confirmed_2fa: 
email: 
external_id: 
groups: 
locale: 
locale_force_update: 
location: 
logout: 
name: 
no_2fa_methods: 
nonce: xxxxxxxxxxxxxxx
profile_background_url: 
remove_groups: 
require_2fa: 
require_activation: 
return_sso_url: https://forum.innovativeusers.org/session/sso_login
suppress_welcome_message: 
title: 
username: 
website:

@wesochuck Спасибо за подробное объяснение.

Скорее всего, это конфликт с другим используемым вами плагином. В прошлом, когда мы сталкивались с подобным поведением, причиной было использование другим плагином фильтра, например wp_redirect.

Пожалуйста, пройдитесь по списку ваших плагинов, отключая их по одному и пытаясь войти в систему. То же самое относится к любому пользовательскому коду в вашей теме (ваших темах).

Спасибо за ответ. Есть ли какие-либо дополнительные советы по отслеживанию плагинов или пользовательского кода, которые могут вызывать проблему? Мы уже пробовали отключать все плагины, но пока безрезультатно.

Мы уверены, что проблема в каком-то нестандартном изменении, но без необходимости пересоздавать весь сайт с нуля нам сложно определить, что именно это может быть.

Если у вас есть возможность выполнить поиск по коду WordPress, не входящему в ядро, который выполняется на вашем сайте, найдите следующие строки:

  • wp_redirect (фильтр)
  • wp_login_url (метод)
  • parse_query (действие)

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

К сожалению, я не могу помочь вам больше, так как проблема здесь не связана с плагином WP Discourse. Это проблема, вызванная каким-то пользовательским кодом в теме, плагине или другом скрипте вашей установки WordPress.

К сожалению, я не могу определить это удалённо, и плагин WP Discourse также не может как-либо зафиксировать это. Фильтры, методы и действия WordPress могут использоваться любыми компонентами, и «приоритет» (то есть порядок выполнения) также может быть изменён кем угодно.

Это большая помощь и хорошая отправная точка. Спасибо! Я отпишусь, как только мы выясним, в чём дело, чтобы другим не пришлось так глубоко копаться.

Мы сузили круг до плагина от X-CD, который является платформой для управления конференциями и членством. Мы свяжемся с ними, чтобы узнать, как они вносят изменения в процесс входа, которые нарушают интеграцию.

Спасибо за помощь @angus!

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

В файл functions.php вашей текущей темы был добавлен следующий код:

function example_allow_extra_redirect( $hosts ) {
$hosts = '[forum.example.org](http://forum.example.org/)';
return $hosts;
}
add_filter( 'allowed_redirect_hosts', 'example_allow_extra_redirect' );