Wp-discourse-shortcodes 插件

我想我已经解决了——[discourse_latest] 本身并不是一个有效的短代码,我可能是在某处看错了。我把它改成了 [discourse_topics source=“latest”],结果就成功了。

(尴尬地笑)
Ray

附:@simon,我该如何更改短代码中显示的最新主题的日期格式?目前显示为 2020-10-20,我更希望它显示为 Oct-20 或类似格式。

1 个赞

我相当确定短代码插件使用的是“WP Discourse 评论”选项卡中设置的日期时间格式。点击该设置描述中的链接,即可查看可用的日期格式选项。

这招管用,谢谢!

Ray

1 个赞

能否默认将用户名作为头像的标题,或提供相应的短代码选项?另外,或许可以增加一个选项来隐藏用户名(例如 display_usernames = "false")?
在此期间,如果有人需要此功能,请前往 wp-discourse-shortcodes-master/lib/discourse-topic-formatter.php 文件,将

$avatar_image = '<img class="wpds-latest-avatar" src="' . esc_url_raw( $poster_avatar_url ) . '">';

替换为

$avatar_image = '<img class="wpds-latest-avatar" title="'. esc_html( $poster_username ) . '" src="' . esc_url_raw( $poster_avatar_url ) . '">';

非常棒的插件,谢谢!

另外,将分类链接(更多信息)作为短代码中的一个选项也会很有用。

这个插件还在维护吗?:blush:

是的,我们(Communiteq)现在负责维护它。

2 个赞

似乎无法“刷新”Discourse 的最新帖子。

我一定是哪里操作有误,

[discourse_topics source=“latest”] 这是我使用的短代码。

它已经拉取了三个 Discourse 主题,但之后我又添加了一些主题,想看看能否同步到我的 WordPress 站点。

但并没有同步过来。

尝试了 Ajax 事件,但仍然无法拉取新帖子 :sweat:

能否仅从特定分类或子分类中获取主题?

感谢您管理这个插件。我需要在 WordPress 的主网站上显示论坛活动。

我的 Discourse 实例中有很多主题,但 [discourse_topics] 短代码返回空白,仿佛没有数据——Screenshot - b9160f714e42b2677b01bcf00c041634 - Gyazo

并且在前端抛出以下错误:警告:在 /home/customer/www/web.com/public_html/wp-content/plugins/wp-discourse-shortcodes-master/lib/discourse-topic-formatter.php 的第 94 行,foreach() 收到了无效参数。

如果这对任何人有帮助,我的社区 RSS 源工作正常,并列出了所有主题。我可能漏掉了什么?感谢帮助 :pray:

编辑和更新:看起来代码中的 topics 变量没有被填充。

第 94 行:foreach ( $topics as $topic ) {
.....
}

// 主题变量定义
if ( $use_plugin_formatting ) {
		$topics            = $discourse_topics['topic_list']['topics'];
}

我已经解决了。显示私密帖子的复选框未启用。除此之外,该错误可以通过为 $topics 变量添加空值条件来解决。我这样做了,问题就顺利解决了。

1 个赞

要是 PHP 的 foreach 不抱怨空数组,我的生活就会美好得多。我们将在下一个版本中添加此检查。

1 个赞

哪个选项可以更新 Discourse 中用户的最新 WordPress 头像?

使用 Webhook 同步用户数据到 Discourse。——我已创建该 Webhook 并在两个站点间正常工作,但无法更新 Discourse 用户的头像。

这个终于排到我的列表最前面了,我明天会着手处理这个插件,修复一些bug并回答您的问题。抱歉耽搁了这么久。

3 个赞

您是否配置了“启用 Discourse Webhook”设置?

我已经彻底测试了该插件,修复了几个错误,其中两个与未能更新短代码输出的缓存有关,更新了自述文件并推送了一个新版本。

我仍然看到一个主要问题,即具有不同类别的 [discourse_topics] 短代码无法正常工作。这将需要大量工作来修复。我将在休假后第一时间处理这个问题。

4 个赞

在此实例中,我只使用了一个短代码,因此我不确定是否应该遇到问题。我想显示私有主题,但仅限于某些类别(这些类别都归于一个父类别下)。无论是使用单个父类别 ID(例如 [discourse_topics category=\"5\" ... ])还是每个子类别 ID(例如 [discourse_topics category=\"6,7,8,9,17\" ... ])似乎都无法将结果限制在这些类别内(会显示额外的、不应显示的私有主题)。我想知道这是否是当前预期的行为(您是否会解决)?

不支持多个类别 ID。

这确实不是预期行为。

一个快速的解决方法是禁用设置选项卡中的“显示私有主题”复选框。这并不能解决选择了错误类别的问题,但可以阻止私有主题出现在 WordPress 中。

您能否检查一下 Discourse 方面的日志,并搜索正在进行的 API 调用?当您在 WordPress 端编辑和更改页面时,API 调用将被触发。

我在任何 Discourse 日志中都找不到任何 API 调用。:woman_shrugging: 不过,好消息是我想我们可能已经解决了。

原始短代码使用了 source="top" 和其他一些参数,所以我慢慢地剥离了短代码,直到它只使用默认设置(通过省略)。我曾以为只有 source="latest" 才使用 webhook,根据 WP 管理设置中的复选框的措辞,但我们为最新主题启用了 webhook(并另外将触发器限制在我们想要显示的类别),然后当我添加回父类别时,短代码开始遵守类别限制!:tada: (尽管清除了 WP 管理页面中的缓存 HTML 以及我们网站的其他缓存来源,但即使没有 webhook,它也没有遵守 source="latest" 的类别限制。)

在看到使用 webhook + source="latest" 的预期结果后,我将源改回“top”,然后一点一点地添加回原始参数。到目前为止,它一直遵守类别限制。我让 webhook 保持启用状态。

如果 webhook 确实是(仍然)有帮助的东西,而不仅仅是某种重置,我建议将 WP 管理页面的措辞从“使用 Discourse Webhook 刷新‘最新’主题列表”更改为“使用 Discourse Webhook 刷新 [discourse_topics] 列表”(或者其他什么,以清楚地表明您在主题列表中使用什么源并不重要,webhook 可能是我们正在寻找的万能药)。:joy:

这是一个很棒的插件。有两个功能问题:

  1. 是否可以在帖子中显示图片,就像使用 template="complete" 的嵌入脚本一样?

  2. 是否可以将用户名替换为真实姓名?

非常感谢。