如何在插件开发中使用wordpress中的会话

时间:2013-04-20 09:39:22

标签: wordpress-plugin wordpress php

我是新手写的插件..我有一个testplugin.php文件和一个ajax.php文件..

我在testplugin.php中的代码是

global $session;

print_r($abc); //$abc is array of my data ..

$session['arrayImg']=$abc; //saving data in session 

echo  $session['arrayImg']; //displayin "Array"

我的ajax.php包含以下代码

global $session;

$abc = $session['arrayImg'];

print_r ("abs== ".$abc); //displayin "abs== Array"

如果使用session_start();

我收到以下错误

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 

我只想将我的插件的一个文件中的数据数组发送到另一个文件......

2 个答案:

答案 0 :(得分:45)

//在你的插件或主题functions.php

function register_session(){
    if( !session_id() )
        session_start();
}
add_action('init','register_session');

//设置SESSION数据 -

$_SESSION['arrayImg'] = $abc;

//获取ajax挂钩函数的数据 -

function resolve_the_ajax_request(){
    if( !session_id())
        session_start();

    $abc = $_SESSION['arrayImg'];
}

答案 1 :(得分:1)

在我的情况下,我也在插件激活中使用该会话变量。所以做了一些非正统的事情。而不是在钩子中定义我的session_start,而是将它作为我插件中的第一行:)。

要插入插件,只要wordpress扫描我的文件,它就会启动会话。

最后,我不会在用户注销时销毁会话。我只是取消了我的变量。这是为了以防万一其他插件也在使用会话。如果我销毁会话,它可能会影响其他插件。

干杯。