Kayla
107
我在任何 Discourse 日志中都找不到任何 API 调用。
不过,好消息是我想我们可能已经解决了。
原始短代码使用了 source="top" 和其他一些参数,所以我慢慢地剥离了短代码,直到它只使用默认设置(通过省略)。我曾以为只有 source="latest" 才使用 webhook,根据 WP 管理设置中的复选框的措辞,但我们为最新主题启用了 webhook(并另外将触发器限制在我们想要显示的类别),然后当我添加回父类别时,短代码开始遵守类别限制!
(尽管清除了 WP 管理页面中的缓存 HTML 以及我们网站的其他缓存来源,但即使没有 webhook,它也没有遵守 source="latest" 的类别限制。)
在看到使用 webhook + source="latest" 的预期结果后,我将源改回“top”,然后一点一点地添加回原始参数。到目前为止,它一直遵守类别限制。我让 webhook 保持启用状态。
如果 webhook 确实是(仍然)有帮助的东西,而不仅仅是某种重置,我建议将 WP 管理页面的措辞从“使用 Discourse Webhook 刷新‘最新’主题列表”更改为“使用 Discourse Webhook 刷新 [discourse_topics] 列表”(或者其他什么,以清楚地表明您在主题列表中使用什么源并不重要,webhook 可能是我们正在寻找的万能药)。
kiefferr
(Ryan Kieffer)
109
嵌套类别未显示的另一个 bug。只显示主类别中的主题。
请参见下面的示例:General 但没有 General >> News and Events
再次删除图块和所有其他短代码属性…
angus
(Angus McLeod)
110
嘿 Ryan,插件没有主题图片预览或名称功能,但是你可以使用这些过滤器来应用你自己的格式并可能添加这些元素。
要完全覆盖 HTML 输出,请使用这两个过滤器(即 add_filter 的等效项)
// 返回 false 以使用你自己的格式
apply_filters( 'wpds_use_plugin_topiclist_formatting', true );
// 从 discourse_topics 数据返回你自己的 HTML 输出
apply_filters( 'wpds_after_topiclist_formatting', $output, $discourse_topics, $args );
或者将其他元素添加到现有的 HTML 中
apply_filters( 'wpds_topiclist_above_header', $output, $topic, $category, $poster_avatar_url, $args );
apply_filters( 'wpds_topiclist_above_footer', $output, $topic, $category, $poster_avatar_url, $args );
apply_filters( 'wpds_topiclist_avatar', $avatar_image, esc_url_raw( $poster_avatar_url ) );
apply_filters( 'wpds_topiclist_below_footer', $output, $topic, $category, $args );
抱歉,你的意思是嵌套类别中的主题显示出来了,但没有显示其类别徽章吗?
1 个赞
kiefferr
(Ryan Kieffer)
111
非常感谢,Angus。这很有帮助。
是的。如果一个主题位于嵌套类别中,徽章将不会显示。下面的截图显示了缺失的徽章。这是一个位于“General >> News and Events”嵌套类别中的主题。如果我将该主题的类别更改为父类别“General”,徽章将如第二个主题所示显示。
1 个赞
angus
(Angus McLeod)
112
谢谢你的澄清,瑞安。我下周会查看这个问题,然后回复你。
1 个赞
kiefferr
(Ryan Kieffer)
113
谢谢。FWIW,我添加了一个“真实姓名”属性来替换用户名,并将我的更改发布在此存储库中。我对 git 相当陌生,所以很抱歉它没有遵循正确的提交渠道,但如果对其他人有帮助,更改就在那里。
2 个赞
kiefferr
(Ryan Kieffer)
114
此插件最大的问题仍然是无法按类别包含/排除。在基于会员制的私有论坛中,您要么看到所有类别,要么什么也看不到,这意味着无法将员工主题排除在普通会员之外。
然而,注释掉 ajax 请求并完全依赖 webhook 似乎是一个简单的解决方法。我们已经设置了触发器,在 webhook 中排除员工类别。
这可以暂时阻止新的员工讨论,直到 ajax 调用最终完成。
那么,也许可以注释掉 ajax 调用?..
我是否忽略了什么会让这种方法不可取?
1 个赞
RGJ
(Richard - Communiteq)
116
重提旧事
我很高兴地宣布,WP Discourse Shortcodes 插件现在支持(实验性) 主题列表过滤功能。 
除了 source="latest" 或 source="top",您现在还可以使用 source="filter",并将过滤查询放在 q 参数中,如下所示:
[discourse_topics source="filter" q="category:general,site-feedback"]
别忘了先启用 experimental_topics_filter 设置!
我还修复了一些错误:
- 完全重构了缓存(这也消除了对
id 属性的需求)
- 非英语论坛上的用户名未显示
- 为 latest-AJAX 添加了类别过滤器
该插件仍未在 WordPress 插件库中,因此您应该从仓库中 git clone 它:
cd wp-content/plugins
git clone https://github.com/communiteq/wp-discourse-shortcodes
或者,您也可以上传此 ZIP 文件进行安装。
wp-discourse-shortcodes-0.40.zip (67.6 KB)
5 个赞
RGJ
(Richard - Communiteq)
119