当用户回复嵌入式线程

时间:2017-03-07 22:53:27

标签: wordpress bbpress

我正在制作一个制作视频内容的教育网站,并使用BBPress论坛进行讨论,而不是使用原生的WordPress评论。以下是它的工作原理:

我在wp_insert_post上有一个钩子,当创建新的topic帖子时会创建一个新的BBPress video,并将这个新的topic_id保存到_comment_topic_id元场。

在显示视频的single-video.php模板中,我使用BBPress [bbp-single-topic id=$topic_id]短代码显示主题帖子和回复表单供人们发表评论。

这一切都很棒!我只有一个问题 - "订阅"当人们通过Video Single页面发布回复时,BBPress的功能不起作用。回复发布得很好,但订阅的用户没有收到通知。如果您不熟悉 - 当用户订阅某个帖子时,只要有人回复该帖子,他们就会收到一封电子邮件。当有人通过实际的线程单页发布回复时,这仍然可以正常工作 - 它只是通过视频单页上的短代码嵌入的线程上的问题。

我已经尝试深入挖掘核心,我发现bbp_new_reply动作并未触发 - BBPress使用一个名为bbp_notify_topic_subscribers的函数挂钩到{{ 1}}发送通知,当通过视频单页进行回复时,该功能根本不运行。

似乎BBPress使用一些隐藏的输入来确定在提交回复后要运行的操作,但这些似乎通过短代码正确包含。它们出现在Topic单一表单的底部(正常工作);

bbp_new_reply

这些出现在视频单一形式的底部(没有&#t;)

<input type="hidden" name="bbp_topic_id" id="bbp_topic_id" value="422573">
<input type="hidden" name="bbp_reply_to" id="bbp_reply_to" value="0">
<input type="hidden" name="action" id="bbp_post_action" value="bbp-new-reply">
<input type="hidden" id="_wpnonce" name="_wpnonce" value="83ea236cd1">
<input type="hidden" name="_wp_http_referer" value="/forums/topic/SLUG/">

我对如何进一步调试此问题感到茫然,并且可以真正使用一些帮助。 BBPress拥有各种页面类型/帖子类型检查核心,我一直在躲避和编织,但这一次让我感到难过。我怀疑问题是在某个地方检查当前帖子的帖子类型,看到它是<input type="hidden" name="bbp_topic_id" id="bbp_topic_id" value="422573"> <input type="hidden" name="bbp_reply_to" id="bbp_reply_to" value="0"> <input type="hidden" name="action" id="bbp_post_action" value="bbp-new-reply"> <input type="hidden" id="_wpnonce" name="_wpnonce" value="83ea236cd1"> <input type="hidden" name="_wp_http_referer" value="/videos/SLUG/"> 而不是video并且在行动开始之前就已经开始了,但我有不知道如何或在哪里找到它以及如何修补它。

谢谢!

1 个答案:

答案 0 :(得分:1)

原来我所追踪的每一条线都是红鲱鱼。

我有一个连接到fork()的另一个函数,它将您重定向到Video单页,而不是如果您从视频单页发布了回复,则将您发送到Thread单页。事实证明,重定向是在允许wp_insert_post允许触发的bbp_new_reply行动之前击中并停止执行。

我将该函数更改为挂钩到bbp_new_reply并将其优先级更改为11,以便它在本机操作之后运行。工作得很好!