我正在制作一个制作视频内容的教育网站,并使用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
并且在行动开始之前就已经开始了,但我有不知道如何或在哪里找到它以及如何修补它。
谢谢!
答案 0 :(得分:1)
原来我所追踪的每一条线都是红鲱鱼。
我有一个连接到fork()
的另一个函数,它将您重定向到Video单页,而不是如果您从视频单页发布了回复,则将您发送到Thread单页。事实证明,重定向是在允许wp_insert_post
允许触发的bbp_new_reply
行动之前击中并停止执行。
我将该函数更改为挂钩到bbp_new_reply
并将其优先级更改为11,以便它在本机操作之后运行。工作得很好!