我有一个自定义页面模板,其中包含一个表单(page-report.php) .
我对它做了验证,所以我需要动作来导致相同的表单,但我需要在成功验证时重定向到不同的页面 .
wp_redirect()不起作用,因为在输出已经启动后吐出header()函数 .
if($ _ POST ['report']){if($ validator-> ValidateForm())
{
wp_redirect('http:// thankyou')//重定向
}
}
我不能使用ob_start()和ob_flush(),因为此页面模板中不包含标头 .
我试着在functions.php中添加一个函数:
add_action('get_header','redirect_to'); function redirect_to($ page){if($ page){
wp_redirect('http://www.google.com'); }
}
但是,如果我没有条件if(),那只能起作用 . 如果我使用它,wp_redirect()将在输出启动后吐出 .
我最好的办法是什么?
4 回答
我认为你必须使用save_post钩子:
do_action('save_post','custom_add_save');
您也可以尝试使用插件而不是自己的代码... Gravity Forms和Contact表单7都可以正常工作 .
}
我得到了...因为我在管理页面内做了所有事情,所以在wp_redirect()之前已经解决了 Headers ,正如问题中所解释的那样 .
所以我最终在顶部创建了一个新功能:
这是确保redader_to()函数将在 Headers 之前触发(在admin_init上) . 也许不是最优雅的解决方案,但它完美无缺 .
因此,如果有人在wordpress中寻找“重定向后发布”,这就是你如何做到的:
试试这个