BBPress bbp_new_reply 操作在用户回复嵌入式线程时未触发
BBPress bbp_new_reply action not firing when user replies to embedded thread
我在一个教育网站工作,该网站制作视频内容并使用 BBPress 论坛进行讨论,而不是本地 WordPress 评论。它是这样工作的:
我在 wp_insert_post
上有一个钩子,它在创建新的 video
post 时创建一个新的 BBPress topic
并将这个新的 topic_id
保存到_comment_topic_id
元字段。
在我显示视频的 single-video.php
模板中,我使用 BBPress [bbp-single-topic id=$topic_id]
短代码来显示主题线程和人们对 post 评论的回复表单。
所有这一切都很棒!我只是遇到一个问题 - 当人们 post 通过单一视频页面回复时,BBPress 的 "subscribe" 功能不起作用。回复 posted 就好了,但订阅的用户不会收到通知。如果您不熟悉 - 当用户订阅一个线程时,只要有人回复该线程,他们就会收到一封电子邮件。当有人 post 通过实际线程单页回复时,这仍然工作正常 - 这只是通过视频单页上的简码嵌入的线程的问题。
我已经尝试深入研究核心,但我发现 bbp_new_reply
操作没有触发 - BBPress 使用一个名为 bbp_notify_topic_subscribers
的函数挂接到 bbp_new_reply
发送通知,当通过视频单个页面进行回复时,该功能根本 运行ning。
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 在核心中有各种页面 type/post 类型检查,我一直在回避和编织,但这个让我难住了。我怀疑问题是它在某处检查当前 post 的 post 类型,看到它是 video
而不是 topic
并在操作 运行s,但我不知道如何或在哪里找到它以及如何修补它。
谢谢!
原来我跟踪的每条线索都是转移注意力的线索。
我在 wp_insert_post
中附加了另一个功能,如果您从视频单页发布回复,它会将您重定向回视频单页,而不是将您发送到线程单页。事实证明,在允许触发 bbp_new_reply
操作之前,重定向已命中并停止执行。
我将该函数更改为也挂接到 bbp_new_reply
并将其优先级更改为 11,以便在本机操作之后 运行。干得漂亮!
我在一个教育网站工作,该网站制作视频内容并使用 BBPress 论坛进行讨论,而不是本地 WordPress 评论。它是这样工作的:
我在 wp_insert_post
上有一个钩子,它在创建新的 video
post 时创建一个新的 BBPress topic
并将这个新的 topic_id
保存到_comment_topic_id
元字段。
在我显示视频的 single-video.php
模板中,我使用 BBPress [bbp-single-topic id=$topic_id]
短代码来显示主题线程和人们对 post 评论的回复表单。
所有这一切都很棒!我只是遇到一个问题 - 当人们 post 通过单一视频页面回复时,BBPress 的 "subscribe" 功能不起作用。回复 posted 就好了,但订阅的用户不会收到通知。如果您不熟悉 - 当用户订阅一个线程时,只要有人回复该线程,他们就会收到一封电子邮件。当有人 post 通过实际线程单页回复时,这仍然工作正常 - 这只是通过视频单页上的简码嵌入的线程的问题。
我已经尝试深入研究核心,但我发现 bbp_new_reply
操作没有触发 - BBPress 使用一个名为 bbp_notify_topic_subscribers
的函数挂接到 bbp_new_reply
发送通知,当通过视频单个页面进行回复时,该功能根本 运行ning。
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 在核心中有各种页面 type/post 类型检查,我一直在回避和编织,但这个让我难住了。我怀疑问题是它在某处检查当前 post 的 post 类型,看到它是 video
而不是 topic
并在操作 运行s,但我不知道如何或在哪里找到它以及如何修补它。
谢谢!
原来我跟踪的每条线索都是转移注意力的线索。
我在 wp_insert_post
中附加了另一个功能,如果您从视频单页发布回复,它会将您重定向回视频单页,而不是将您发送到线程单页。事实证明,在允许触发 bbp_new_reply
操作之前,重定向已命中并停止执行。
我将该函数更改为也挂接到 bbp_new_reply
并将其优先级更改为 11,以便在本机操作之后 运行。干得漂亮!