BBPress BBP_NEW_REPLY操作在用户回复嵌入的线程时未触发

时间:2017-03-07 作者:Ryan Giglio

我在一个教育网站上工作,该网站制作视频内容,并使用BBPress论坛进行讨论,而不是本地的WordPress评论。其工作原理如下:

我有个钩子wp_insert_post 创建一个新的BBPresstopic 当一个新的video 创建帖子并保存此新帖子topic_id 到a_comment_topic_id 元字段。

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

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

我试着挖掘核心,我甚至发现bbp_new_reply 操作未启动-BBPress使用一个名为bbp_notify_topic_subscribers 连接到bbp_new_reply 发送通知,而当通过视频单页进行回复时,该功能根本没有运行。

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="/forums/topic/SLUG/">
这些显示在视频单窗体的底部(没有)

<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/">
我不知道如何进一步调试这个问题,真的需要一些帮助。BBPress的核心有各种各样的页面类型/帖子类型检查,我一直在回避和迂回,但这一个让我感到困惑。我怀疑问题是,它在某处检查当前帖子的帖子类型,看到它是video 而不是topic 在行动开始之前,我也不知道如何或在哪里找到它,以及如何修补它。

谢谢

1 个回复
SO网友:Ryan Giglio

结果发现我跟踪的每一条线索都是在转移视线。

我还连接了另一个函数wp_insert_post 如果您发布了来自视频单页的回复,则会将您重定向回视频单页,而不是将您发送到线程单页。结果表明,重定向在bbp_new_reply 允许启动操作。

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

相关推荐

如何找到连接到bbpress挂钩的回调?

bbpress有大量回调连接到各种挂钩。我熟悉wordpress级别的这个功能,但我无法找到bbpress在哪里注册了大量这些回调。具体而言,我想更改回调的行为,该行为通过以下方式触发:do_action( \'bbp_template_before_forums_loop\' ); 如果有人能帮我找到这个回调,这样我就可以更改它输出的HTML,我将不胜感激。