wp_redirect在自定义插件中不起作用

时间:2018-06-20 05:13:21

标签: wordpress session

我正在尝试在wordpress中创建自定义插件。 我们要创建一个案例,例如如果用户未登录到系统,则应将用户重定向到登录页面。我尝试了wp_redirect和wp_safe_redirect,但是它不起作用。这是我的代码。

 if (isset($_SESSION['game_login'])) {
   //Do Something
 }else{
   wp_redirect('login');
   exit():
 }

我收到此警告

Cannot modify header information - headers already sent by (output started at wp-includes/class.wp-styles.php:225) in wp-includes/pluggable.php on line 1216

在这种情况下有人可以建议我吗?

2 个答案:

答案 0 :(得分:0)

除非您特别延迟最终输出,例如在template_redirect上使用add_shortcode修改内容,或者您​​在打算缓冲输出。

示例中的代码应封装在一个函数中,并与WordPress的众多Action Hooks之一挂钩。通常,这种功能是在plugins_loadedinit钩子上添加的。

add_action( 'init', 'redirect_anonymous_users' );
function redirect_anonymous_users(){
    if( isset( $_SESSION['game_login'] ) ){
        // Do Something
    } else {
        wp_redirect('login');
        exit();
    }
}

答案 1 :(得分:0)

可能有多个原因导致此问题。 尝试这一点,希望它可以解决

  1. 从文件末尾的php ?>标记后显示错误的文件中删除空白,但是根据您的情况 它来自核心文件,因此请勿在代码方面进行任何修改,只需尝试删除代码中的空白 这些文件的结尾。同时从文件底部删除空格 wp-config.php和functions.php
  2. 如果上述方法不起作用,请将此代码添加到您的wp-config.php文件中

    ob_start(); error_reporting(0);