WP_reDirect()-已发送标头

时间:2015-02-23 作者:Snowball

我正在尝试使用wp_redirect() 在页面上成功提交注册表单后重定向用户。

它不工作,并显示以下错误:

警告:无法修改标题信息-标题已由/Applications/MAMP/htdocs/theme/wp-content/themes/test/header.php:10中的/Applications/MAMP/htdocs/theme/wp-includes/plugable发送。php在线1178

我知道之前已经有输出了,这就是为什么它不起作用,但我不知道如何使它起作用。

注册表单由一个函数呈现,并由我的函数中的另一个函数提交。php。

if ( isset( $_POST[\'subscribe\'] ) ) {
    // Submits the form and should then redirect
    wp_redirect("/thank-you/");
    exit;
}
然后,在我想要显示注册表单的地方使用这两个函数。

恐怕这不是最好的办法。我应该制定一些行动来做到这一点,但我不知道如何实现这一点。我找到的大多数教程直接在同一页上显示结果,不需要额外的重定向。也许这就是为什么他们使用函数中的函数。php

5 个回复
最合适的回答,由SO网友:Snowball 整理而成

找到了答案(via)

我没有使用这个函数,而是在“wp\\u loaded”中添加了一个操作,确保在发送任何头之前加载它。

<?php
add_action (\'wp_loaded\', \'my_custom_redirect\');
function my_custom_redirect() {
    if ( isset( $_POST[\'subscribe\'] ) ) {
        $redirect = \'http://example.com/redirect-example-url.html\';
        wp_redirect($redirect);
        exit;
    }
}     
?>

SO网友:mynamAvinash

你必须使用wp_redirect()之前get_header()然后它将不会显示标题错误。

SO网友:Abhisek Malakar
add_action(\'template_redirect\', function(){
if(isset($_POST[\'subscriptio\'])){// make this condition such that it only matches when a registraiotn form get submitted
/**
 * do your stuff here
 */
wp_redirect();//....
}
});
SO网友:Artinium

您也可以这样做

而不是下面的行

wp\\U重定向(“$url”);

echo("<script>location.href = \'".$url."\'</script>");

<?php <script><?php echo("location.href = \'".$url."\';");?></script>?>
这肯定会解决你的问题。

SO网友:Karue Benson Karue

如果您正在创建插件,可以调用ob_start(); 在插件代码的开头或ob_start(); 在函数的顶部。代码开始前的php文件

enter image description here

结束

相关推荐

当尝试向我的登录页面添加一个css文件时,会出现“Headers Always Sent”?

我看过的每一篇关于这个主题的教程都已经过时了,所以我希望这里的人能帮助我。我想为我的wp登录设置样式。带有CSS文件的php页面。但我想以一种在Wordpress更新时不会被覆盖的方式来做。据我所知,根据我读到的图茨,在我的主题函数中使用函数添加它的最佳方式。php文件。不幸的是,人们建议使用的代码并不适合我。这是我添加的代码。<?php function custom_login() { echo \'<link rel=\"stylesheet\" href=\"wplog