Problem linking Discourse forum to WP Discourse

Hello,

I’m working on a wordpress site and have the WP Discourse plugin installed. Our objective is obviously to sync our wordpress site with the Discourse forum so that when a post is published to the site it is also published to Discourse.

However until now it didn’t work much. While creating a post, even with the “Create new Topic” Discourse box checked, it does not work and the post isn’t created in the forum.

I went to the WP Discourse plugin settings and to me everything seemed to be fine (everything isn’t obviously fine and I may have done something wrong as it doesn’t work), the Discourse API key is correct as well as the SSO secret key, as I’m also trying to use my wordpress site as an SSO provider.

I noticed in the WP Discourse plugin settings that there were two error messages, when accessing the “SSO Provider” and “Connection” tabs:


which is quite problematic because there IS an admin user with this email address on the forum (myself).
and most importantly, “You are not connected to Discourse. If you are setting up the plugin, this notice should go away after completing the form on this page.”

Soooo my wordpress and Discourse don’t seem to be synced. Can I please get some help in order to solve this ? Feel free to ask if you need more information - I guess you obviously do

The first thing to sort out is the issue on the Connections tab. The plugin won’t work until you establish a connection with Discourse.

What have you set for the Publishing Username on that tab? It should be set to either the Discourse username of the system user (‘system’ by default) or the username of an admin user from your forum.

What version of WordPress are you using?

Hello Simon, thanks for the answer.

So it seems really dumb, but as expected the Publishing Username wasn’t correct (I missed a space on the name). I fixed this and now I have the “You are connected to Discourse!” message.

Also no more error message on the SSO Provider tab. By the way I’m using WordPress 4.9.3.

Anyway, sorry for the inconvenience and thanks again for the answer. I’ll update this thread/create another one if I have any other issue especially with synchronizing the creation of posts between Wordpress and the forum.

Hi,

Although I put all the needed info to Connection tab but it still shows

You are not connected to Discourse. If you are setting up the plugin, this notice should go away after completing the form on this page.

Please help.

Discourse: https://forum.biohack.vn
WP: https://biohack.vn
I use admin as the username since it’s the Discourse admin.

Try using ‘system’ for the username.

Already before I switch to admin.

For the Publishing Username setting, you need to use the username of your Discourse System user. That username defaults to ‘system’ (without the quotes.) For the API Key, use the All Users API Key. You can find that key at /admin/api/keys.

When I try to visit your site at http://biohackplus.com/, the page isn’t loading for me. Are you able to access it at that URL?

Let’s not open more than one topic on the same exact thing please.

I was able to connect to Discourse. However, although I put all the needed info Publishing tab, when I create a post in Wordpress, it doesn’t show in Discourse.

What I’m trying to do: When I create a post in a category in Wordpress, the plugin will create a post in Discourse with link to my Wordpress post in a matched Discourse Category.

This topic has instructions for publishing posts to Discourse: WP Discourse now supports the WordPress Block Editor. Is this working for you?

На моём сайте наблюдается похожая проблема. Я установил WP Discourse, создал универсальный ключ для всех пользователей, и имя публикующего — system. Тем не менее я вижу сообщение «Вы не подключены к Discourse…». Мой сайт проксируется через Cloudflare, но насколько я могу судить, это работает корректно. Буду очень благодарен за любую помощь. Версия Discourse — 2.6.0.b4.

Привет, @sturdy2, есть несколько причин, по которым у вас могут возникнуть проблемы. Попробуйте, пожалуйста, следующую конфигурацию.

В Discourse: создайте глобальный API-ключ для пользователя-администратора

Конфигурация должна выглядеть так:

В WordPress: используйте этот ключ и установите «Имя пользователя для публикации» как выбранного вами пользователя-администратора

(поле «URL-адрес Discourse» должно содержать ваш URL-адрес Discourse, а не то, что показано на скриншоте)

Привет, @angus, спасибо за ответ. К сожалению, после создания ключа для одного пользователя, как вы указали, у меня всё ещё появляется сообщение об отсутствии подключения. Я перепробовал всё, что мог, но безрезультатно… Спасибо ещё раз.

Хорошо, давайте попробуем разобраться.

Только для подтверждения: вы создали «Глобальный ключ» (разрешающий все действия)?

Если да, давайте проверим следующее:

  1. Где размещён ваш Discourse? Где размещён ваш WordPress?

  2. Установлены ли у вас какие-либо пользовательские плагины для Discourse?

  3. Пожалуйста, установите этот плагин проверки работоспособности на WordPress:

    • Обнаруживает ли этот плагин какие-либо критические проблемы?

    • Включите режим устранения неполадок и активируйте только плагин wp-discourse (все остальные плагины будут отключены). Затем попробуйте подключиться снова.

Да, глобальный, для одного пользователя (я, администратор). WP Discourse не подключается.

  1. Discourse размещён на DO.
  2. Не уверен насчёт кастомных плагинов.
    3a. Плагин «Health Check & Troubleshooting» (также известный как «Site Check») установлен уже некоторое время. Один сомнительный «критический» предупреждение от Yoast SEO гласит: «Ваш сайт не может быть найден поисковыми системами». Дальнейшие инструкции по устранению неполадок указывают, что «если Google может запустить тест на мобильную совместимость, значит, он также может сканировать домен. В таком случае предупреждение от Ryte неверно». И домен, и поддомен успешно проходят этот тест.
    3b. Пробовал это ранее и снова. Все плагины, кроме WP Discourse, отключены. WP Discourse не подключается.

ОБНОВЛЕНИЕ: Я занимаюсь этим уже несколько дней, и есть несколько вещей, которые я не понимаю, вероятно, потому, что почти всё это для меня совершенно ново.

  1. DNS-запись «A» для поддомена discourse указывает на IP-адрес, выданный DO (тот же IP, который я использую для SSH), но команда dig discourse.example.com возвращает три разных IP-адреса, которые, судя по всему, назначены Cloudflare, а dig https://discourse.example.com указывает на другой IP whois BAREFRUIT-ERRORHANDLING в Великобритании. Что-то здесь явно не так!

  2. Я предполагаю, что WP Discourse использует cURL для подключения к Discourse, поэтому я экспериментировал с cURL и API Discourse. У меня есть три API-ключа (включая подтверждённый выше). До вчерашнего дня все три показывали «Никогда не использовался». Вчера я заметил, что оригинальный ключ, созданный в августе прошлого года, теперь показывает, что он был использован один день назад! Два других по-прежнему показывают «Никогда не использовался». Я предполагаю, что это, скорее всего, означает, что один или несколько моих экспериментов с cURL действительно установили соединение; к сожалению, я не знаю, какой именно сработал. Также я заметил, что команды cURL, возвращающие HTTP 200, не обновляют информацию «Последнее использование API» (остаётся «Никогда не использовался»).

Оба пункта #1 и #2, указанные выше, кажутся мне важными, но я пока не могу определить проблемы.

Приношу извинения за задержку; иногда жизнь вмешивается. Ещё раз, @angus, спасибо за помощь.

Хорошо, попробуйте убрать Cloudflare из вашей настройки. Нам нужно сузить круг потенциальных источников ошибки.

Привет, @angus,
Ещё одно обновление: я установил плагин Query Monitor (в WP) (см. вывод ниже).

При использовании cURL на моём локальном компьютере я также получаю ошибку 403, поэтому, на мой взгляд, это проблема на стороне провайдера, затрагивающая мой сайт и WP Discourse. Вероятно, это Cloudflare, но я пока не хочу отключать Cloudflare. См. ниже.

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

РЕДАКТИРОВАНИЕ: Решено! Возможно, это ошибка в разделе /admin/site_settings/category/security → разрешённые пользовательские агенты поисковых роботов.
Похоже, что любая запись в текстовом поле «разрешённые UA» приводит к блокировке всего, даже команды curl с моего локального компьютера. Если немедленно очистить текст, WP Discourse сразу же показывает сообщение: « Вы подключены к Discourse!».

Рад, что вы разобрались! :tada:

Да, я считаю, что эта настройка должна быть довольно ограничительной (отсюда и предупреждение ЗАГЛАВНЫМИ БУКВАМИ в инструкции).

Чтобы разрешить доступ вашему экземпляру WordPress при использовании allowed crawler user agents, добавьте его следующим образом:

Wordpress/<wordpress_version>

Я только что протестировал это на своем тестовом WordPress / Discourse, добавив Wordpress/5.5.3 в allowed crawler user agents, и всё сработало :+1:

Если вы не хотите обновлять это каждый раз при обновлении WordPress, вы можете использовать простой плагин, чтобы установить собственный user agent для таких запросов в WordPress, например:

Спасибо за объяснение. Теперь это начинает иметь для меня больше смысла. Изначально я думал, что «разрешенные агенты-роботы» предназначались для идентификации разрешенных поисковых роботов. Я сначала ввёл «Googlebot», не понимая, что WP Discourse использует пользовательский агент WordPress, и оказался заблокированным. Просто ещё одна ошибка новичка. Я думаю, это распространённое недоразумение, но в ограниченной документации и ещё более скудных примерах я ничего не нашёл.

В качестве «разрешенных агентов-роботов» я теперь использую WordPress (версия не нужна), Googlebot и Discourse (добавлен для использования с cURL, как показано ниже). Видите ли вы проблему? Или мне нужно добавить что-то ещё?

Похожая ситуация с cURL, использующим API Discourse. Ранее я получал ошибку 403, пока не добавил пользовательский агент, как показано ниже.

Первый пример, опубликованный в документации API Discourse (не работает у меня):
curl -X GET "http://127.0.0.1:3000/admin/users/list/active.json" \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: system"
Это работает у меня после добавления опции пользовательского агента.
curl -A Discourse -X GET "http://discourse.example/admin/users/list/active.json" \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: system"

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

@angus, большое спасибо за вашу помощь и поддержку.

Здравствуйте,

Единственный плагин для управления подписками, о котором я знаю и который работает как с WordPress, так и с Discourse, — это Memberful. У них также есть подробные инструкции по интеграции с Discourse здесь – Integrate Discourse with Memberful - Memberful

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