WordPress重定向错误排查:ap_after_question_form_processed钩子跳转不生效
代码存在的核心问题
get_permalink()函数用法错误:该函数仅用于获取WordPress站内内容的链接,入参必须为整数类型的内容ID或WP_Post实例,直接传入外部完整URL会返回布尔值false,导致返回的redirect字段为空,无法触发重定向。- 如果你的目标链接是站内链接,也不应该直接传URL给
get_permalink(),需要传入对应页面/文章的ID。
修复方案
情况1:重定向到外部自定义链接
直接把get_permalink()去掉,直接赋值完整URL即可:
add_action( 'ap_after_question_form_processed', function () { ap_ajax_json( array( 'success' => true, 'redirect' => 'https://myscustomlink.com', // 直接填自定义链接即可 ) ); });
情况2:重定向到站内部位
传入对应内容的ID到get_permalink():
add_action( 'ap_after_question_form_processed', function () { ap_ajax_json( array( 'success' => true, 'redirect' => get_permalink( 123 ), // 123替换为目标页面/文章的ID ) ); });
额外排查点
如果修复后依旧无法重定向,可检查两点:
- 确认当前AnsPress版本的前端JS逻辑支持处理
ap_ajax_json返回的redirect字段,部分旧版本需要自己加前端JS监听AJAX返回结果做跳转 - 排查是否有其他钩子或代码在
ap_after_question_form_processed之后执行,覆盖了你的AJAX返回结果
内容的提问来源于stack exchange,提问作者Takacs Zoltan
相关产品推荐
相关产品推荐

