我在一个网站上工作,新用户希望在继续之前同意阅读我们的网站政策。新用户登录后,将重定向到策略页面。要继续阅读该网站,他们需要勾选“我同意”框。
我的问题是,用户不再被定向到策略页面,重定向失败。这是我收到的错误消息:
PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-includes/class.wp-styles.php:225) in /var/www/html/wp-includes/pluggable.php on line 1226
PHP Stack trace:
PHP 1. {main}() /var/www/html/index.php:0
PHP 2. require() /var/www/html/index.php:17
PHP 3. require_once() /var/www/html/wp-blog-header.php:19
PHP 4. include() /var/www/html/wp-includes/template-loader.php:74
PHP 5. policy_redirect() /var/www/html/wp-content/themes/mytheme/landing-page.php:68
PHP 6. wp_redirect() /var/www/html/wp-content/themes/mytheme/functions.php:691
PHP 7. header() /var/www/html/wp-includes/pluggable.php:1226
我不确定我的代码的哪些部分与这里的帖子相关,我还没有涉及到类。wp样式。php或可插拔。php。
下面是函数中的重定向函数。php:
function policy_agreement_redirect(){
$url = get_site_url() . "/policy-agreement/";
wp_redirect($url); //THIS IS LINE 691 WHERE THINGS BREAK
exit;
}
我网站上的每个页面都包含一些重定向用户的内容,以防他们试图转到某个页面,但尚未同意该策略。例如,下面是登录页的相关部分。php看起来像:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div id="post-<?php the_ID(); ?>">
<div class="entry-content entry">
<?php the_content(); ?>
<?php if ( !is_user_logged_in() ) : ?>
<?php
$url = get_site_url() . "/login/";
wp_redirect($url);
exit;
?>
<p class="warning">
<?php _e(\'You must be logged in to see the team details.\', \'profile\'); ?>
</p>
<?php endif; ?>
<?php if( !check_policy_agreement() ): ?>
<?php policy_agreement_redirect(); ?>
<?php else : ?>
<?php if ( count($error) > 0 ) echo \'<p class="error">\' . implode("<br />", $error) . \'</p>\'; ?>
<!-- THE REST OF THE BLOG -->
关于是什么导致了这个错误以及我应该尝试什么,有什么想法吗?非常感谢您的帮助。非常感谢。