Я установил плагин WP Discourse, и всё работает нормально, кроме вебхука «Синхронизация данных комментариев». Он постоянно завершается ошибкой со статус-кодом 400.
Вот ответ:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
payload URL кажется правильным.
Webhook Secret Key указан и в Discourse, и в плагине WP.
Content Type установлен в application/json.
Пункт Post Event отмечен.
Пункт Check TLS certificate of payload url отмечен.
Еще раз проверьте, что URL полезной нагрузки и секретный ключ веб-хука указаны верно.
Если это не решит проблему, сообщите, пожалуйста, какую структуру постоянных ссылок использует ваш сайт WordPress. Структура постоянных ссылок находится в разделе Настройки / Постоянные ссылки панели управления WordPress.
В каком формате вы вводите URL в поле «Payload URL» вебхука на Discourse? Вы можете опустить доменную часть URL. URL, который указан в описании опции «Синхронизация данных комментариев» на WordPress, должен быть правильным (он создается на основе структуры постоянных ссылок вашего сайта), но возможно, он не подходит для вашего случая.
URL полезной нагрузки выглядит корректно. Есть ли на вашем сайте WordPress какие-либо плагины, связанные с безопасностью, которые могут блокировать запрос?
Одной из заявленных функций плагина iThemes Security является возможность блокировки доступа к REST API. Стоит убедиться, что проблема не вызвана именно этим.
Вам не обязательно использовать вебхук Sync Comment Data с плагином WP Discourse. Основное преимущество его использования заключается в том, что комментарии отображаются сразу после публикации на Discourse, без необходимости ждать до 10 минут для получения новых комментариев. На очень загруженных сайтах вебхук может снизить количество запросов к API, которые ваш сайт отправляет в Discourse. Это в основном влияет на сайты, где на странице списка постов отображается количество комментариев.
Да, у меня это работает, но я хотел внедрить вебхуки, чтобы избежать задержек.
Я обсудил это с нашим разработчиком, и он сказал, что до и после установки плагина безопасности REST API не блокировался. Я в полном недоумении.
Скриншот, который вы опубликовали выше, хорошо показывает, что URL-адрес полезной нагрузки верен. Код ответа 400, который вы получаете, указывает на то, что сервер WordPress отклоняет запрос. Если бы проблема заключалась в несовпадении секретного ключа, вы бы получали код ответа 500.
Если у вас есть доступ к файлу журнала доступа вашего сайта WordPress, он, вероятно, покажет вам, в чём именно заключается проблема.