Wordpress PHP header()提供已发送的标题
我正在Wordpress中进行结账过程,如果客户点击结账按钮,他将被重定向到支付提供商 需要了解的重要信息:Wordpress PHP header()提供已发送的标题,php,wordpress,session,http-headers,Php,Wordpress,Session,Http Headers,我正在Wordpress中进行结账过程,如果客户点击结账按钮,他将被重定向到支付提供商 需要了解的重要信息: 在此过程中,我使用会话 我使用PHPheader()函数将客户发送到此位置 我的问题: 现在,当您单击按钮时,没有重定向,而是一个错误 警告:无法修改标题信息-标题已由第84行/var/www/vhosts/website.com/httpdocs/wp content/themes/template/header.php:24)中的/var/www/vhosts/website.c
- 在此过程中,我使用
会话
- 我使用PHP
函数将客户发送到此位置header()
header( "Location: " . $payment->getPaymentUrl() );
看起来我需要早点做重定向,但我不知道怎么做。有人知道吗?钩住init
或send\u标题
操作
目前我有一个解决问题的办法,但我知道这不是正确的办法。解决方案是将
ob_start()
放在我的标题的顶部。php标题仅在回显任何数据之前发送,因此在任何回显、printf等之前使用它。因此,出现此错误的原因是,响应标题已经发送,并且您无法在响应之后更新标题。要提前重定向,您有两个选项:
wp\u redirect()
function my_redirect() {
exit( wp_redirect( 'url' ) );
}
add_action( 'template_redirect', 'my_redirect' );
我能看到您在基于事件的重定向(即单击按钮)上使用PHP的唯一方法是将用户发送到处理程序来解析请求,并将用户发送到适当的URL。否则,您将无法使用上面列出的方法。
header()
必须在将任何HTML输出发送到浏览器之前调用函数。在Wordpress开始发送HTML内容之前,您需要放置任何header()
调用。我看不到您的其余代码,因此我只能说,将header()
调用移到任何有输出的代码上方,然后等待您的答案!但我想我们还是不了解对方。我使用这个支付脚本,您可以在第52行看到标题函数。希望你现在能更好地理解我。谢谢
function append_script() {
echo '<script type="text/javascript">window.location.replace("url");</script>';
}
add_action('wp_head', 'append_script');
<button onclick="window.location.replace('url')">Button Text</button>