您可以使用 Discourse 作为 Wordpress 的评论系统。评论功能依赖于发布功能,因此您需要设置发布功能才能使评论正常工作。如果您已设置发布功能并准备好设置评论,请观看此短视频或按照以下说明操作。
下一步
设置评论后,您可能需要查看以下主题
说明
设置评论
要使 Discourse 评论显示在您的 WordPress 网站上,您必须选择“启用 Discourse 评论”设置。启用后,您将看到两个选项。“显示评论”选项将为已发布到 Discourse 的每个 WordPress 帖子加载评论模板。此模板将在 WordPress 帖子下方显示 Discourse 评论。“显示评论链接”选项将加载一个评论模板,该模板在已发布的帖子下方显示指向相关 Discourse 主题的链接。链接将显示主题的回复数,但不会在 WordPress 上显示任何回复。
这两个评论选项都通过为 WordPress 帖子加载评论模板来工作。这意味着它们仅在为帖子启用评论时才有效。如果您想为所有帖子启用评论,但又不希望显示尚未发布到 Discourse 的帖子的任何历史 WordPress 评论,请启用“删除 WordPress 评论模板”设置。
设置
以下是其他评论设置功能的简短说明。如果您仍不确定任何设置,请回复此主题并寻求进一步澄清。
使用 Ajax 加载评论
此设置用于从 Wordpress 客户端加载评论,而不是从服务器加载。如果页面缓存阻止在新评论加载到您的网站上,这将非常有用。
加载评论 CSS
此设置加载一个样式表,用于修复 Discourse onebox 和引用在 WordPress 上显示时出现的问题。
显示现有 WP 评论
选择此设置以同时显示已发布到 Discourse 的帖子的现有 WordPress 评论,选择该设置。
现有评论标题
如果您显示现有评论,此设置将在 WordPress 评论上方添加一个标题。
选择性导入设置
有许多设置允许您选择性地导入评论。这些应该是不言自明的。每个设置的默认值都是一个不错的起点,因此除非有原因,否则请不要更改它们。
- 最大可见评论数
- 最少回复数
- 帖子最低分数
- 最低信任级别
- 绕过信任级别分数
- 仅导入版主喜欢的
自定义日期时间格式
此设置格式化显示在您的 WordPress 网站上出现的每个 Discourse 评论的日期。从默认值开始。如果您发现想要更改日期格式,请点击设置描述中的链接以获取有关如何操作的详细信息。
缓存评论 HTML
此设置可用于提高性能。缓存评论 HTML 可减少向 Discourse 发出的请求数量。其关联设置“清除缓存的评论 HTML”应该是不言自明的。
详细的评论日志
启用此项将记录从 Discourse 成功检索到的所有评论,以及错误(默认)。
同步评论数据 Webhook
在“Webhook”设置面板中启用“同步评论数据”Webhook 可以大大减少从 WordPress 到 Discourse 的 API 请求数量。启用 Webhook 之前
-
访问设置描述中提供的 Discourse URL(
http://forum.example.com/admin/api/web_hooks)。 -
点击“新建 Webhook”按钮并填写表单
-
在“Payload URL”字段中,输入 WP Discourse “同步评论数据”字段描述中提供的 URL。它将类似于此,但使用您的 WordPress 网站的 URL:
https://wp-discourse.dev/wp-json/wp-discourse/v1/update-topic-content。 -
确保“Content Type”字段设置为
application/json。 -
在“Secret”输入框中,输入至少 12 个字符的文本字符串。然后将相同的密钥复制到 WP Discourse “Webhook Secret Key”设置中。
-
在“哪些事件应触发此 Webhook?”框中,确保选择了“Post Event”。
-
如果您只将帖子从 WordPress 发布到特定类别,请使用“触发类别”字段。这样,您的 WordPress 网站就不需要处理与主题无关的主题的 Webhook 请求。
-
保持“检查有效载荷 URL 的 TLS 证书”设置启用。
最后,启用“Active”复选框,然后点击创建。保存 Webhook 后,点击“转到事件”按钮。
-
-
返回 WordPress,确保您已将 Discourse 中的 Webhook 密钥输入到“Webhook Secret Key”字段中,并启用“同步评论数据”Webhook 设置。然后保存选项。
Discourse Webhook 现在应该可以正常工作了。您应该通过点击 Discourse 上的 Webhook 的 Ping 按钮(位于 /admin/api/web_hooks/:webhook_id/events)来检查它。确保 ping Webhook 返回状态码 200。
调整 WordPress 归档页面的 comments_number 同步周期
为了获取帖子的正确 Discourse 评论数,该插件需要定期向 Discourse 发出 HTTP 请求以获取当前的评论数。在单个页面上,此周期设置为每 10 分钟最多一次。对于归档页面,此周期设置为每 24 小时最多一次。这样做的原因是避免每次访问归档页面时都向 Discourse 发出多个请求。
如果您仍然发现该插件在显示您网站的归档页面时发出了过多的请求到 Discourse,您可以通过挂钩 'discourse_archive_page_sync_period' 过滤器来调整 archive_page_sync_period。您可以通过将类似以下内容添加到主题的 functions.php 文件中来实现:
add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
// 这将把归档帖子的同步周期更改为每周一次。
return WEEK_IN_SECONDS;
}
如果您发现该插件发出的请求不足以从 Discourse 检索归档页面的当前评论数,您可以将类似以下内容添加到主题的 functions.php 文件中。这将把 archive_page_sync_period 设置为 10 分钟。
注意: 在繁忙的网站上,这可能会给您的服务器带来沉重负担。
add_filter( 'discourse_archive_page_sync_period', 'my_namespace_archive_page_sync_period' );
function my_namespace_archive_page_sync_period( $sync_period ) {
// 这将把归档帖子的同步周期更改为每周一次。
return 10 * MINUTE_IN_SECONDS;
}
在不加载 WordPress 评论模板的情况下显示评论
WP Discourse 插件使用 WordPress 评论模板来加载 Discourse 评论。如果您的主题未加载评论模板,您可以使用静态 get_discourse_comments 辅助函数来显示评论。该函数要求您提供要显示评论的 WordPress 帖子的 ID。以下是其用法的一个简单示例:
use WPDiscourse\\Utilities\\Utilities as DiscourseUtilities;
$discourse_comments = DiscourseUtilities::get_discourse_comments(859);
echo $discourse_comments;
评论的显示方式与在插件的评论设置选项卡中选择“启用 Discourse 评论/显示评论”选项时相同。使用此函数时,将忽略该设置的值,但所有其他评论设置都将得到尊重。
故障排除
Discourse 评论最常见的问题是它们可能不会在帖子发布到 Discourse 后立即显示。此延迟是故意的,因为该插件会尝试减少需要向 Discourse 发出的请求数量。每次加载页面都发出请求会减慢您的网站速度。如果您没有看到评论立即出现,请等待 10 分钟后再刷新页面。
显示 Discourse 和 WordPress 评论时评论数量的问题
wp-discourse 插件使用 WordPress get_comments_number 过滤器钩子,以便可以在整个主题中显示为帖子创建的 Discourse 评论的数量。当帖子同时显示 Discourse 和 WordPress 评论时,这会产生冲突。该插件在大多数地方都能解决该冲突。它无法解决的一个地方是 WordPress 主题通常在评论部分顶部显示的评论标题。此部分以“2 thoughts on…”之类的开头。
最简单的方法是向主题的 css 文件添加一条规则。
.discourse-comments-area ~ .comments-area .comments-title {
display: none;
}


