如何在Wordpress中使用session_start?

2022-08-30 16:50:42

我正在创建一个双语网站,并决定使用以下方法来确定页面的语言:session_start

session_start();    
if(!isset($_SESSION['language'])){
    $_SESSION['language'] = 'English'; //default language
}

这样做的问题是它与Wordpress冲突,我得到以下结果:

警告:session_start() [function.session-start]:无法发送会话 cookie - 已发送的标头(输出在 /home/neurosur/public_html/v2/wp-content/themes/default/header.php:8)中位于 /home/neurosur/public_html/v2/wp-content/themes/default/region.php第 13 行

有没有办法解决这个问题?


答案 1

编辑

Wordpress 在运行标头.php文件之前发送标头信息。因此,在标头中启动会话.php可能仍与 wordpress 发送的标头信息冲突。在 init 上运行它可以避免此问题。(摘自jammypeach的评论))

在函数.php文件中编写以下代码:

function register_my_session()
{
  if( !session_id() )
  {
    session_start();
  }
}

add_action('init', 'register_my_session');

现在,如果要在会话中设置数据,请按如下方式操作

$_SESSION['username'] = 'rafi';

答案 2

我已将原始答案从@rafi更改为正确的答案(见下文)。

在函数.php文件中编写以下代码:

function register_my_session()
{
  if( !session_id() )
  {
    session_start();
  }
}

add_action('init', 'register_my_session');

推荐