2012-03-23 100 views
3

我发现了一堆讨论使用会话的文章。 从我已经能够找到最好的方法是添加一个init动作。 我一直在关注这篇文章 http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/wordpress会话问题

但是我必须缺少一些东西。每次我用我的插件打电话给我的页面,没有会话ID

我错过了什么吗?

感谢您的帮助

add_action('init', 'my_GB_StartSession', 1); 
add_action('wp_logout', 'my_GB_myEndSession'); 
add_action('wp_login', 'my_GB_myEndSession'); 
if (!function_exists('my_GB_StartSession')) { 
    function my_GB_StartSession() { 
     if(!session_id()) { 
      errorLog("session starting\n"); 
      session_start(); 
     } 
    } 
} 
function UnitNet_GB_myEndSession() { 
    session_destroy(); 
} 
+0

您是否收到任何错误我你的PHP错误日志? “errorLog(”会话开始\ n“);”不应该是error_log('会话开始\ n'); ? – ninja 2012-03-23 22:26:07

+0

不,我没有收到任何错误。 errorLog是我的东西中的一个函数,我每次都在我的日志文件中启动会话 – randy 2012-03-24 06:03:35

+0

调用session_start将设置$ _SESSION全局,因此如果在运行wp-settiings并设置register_globals之前调用它,则会失去会话变量。 – 2014-05-10 04:21:23

回答

0

尝试这一点,并添加到您的主题的function.php:

add_action('init', 'myStartSession', 1); 
add_action('wp_logout', 'myEndSession'); 
add_action('wp_login', 'myEndSession'); 

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

function myEndSession() { 
session_destroy(); 
} 

现在会是你的,你在你的代码,希望使用:

$_SESSION['myKey'] = "Some data I need later"; 

if(isset($_SESSION['myKey'])) { 
$value = $_SESSION['myKey']; 
    } else { 
$value = ''; 
    } 

或之前WP的设置将其添加到WP-config.php文件(例如在WP-config.php文件的顶部)

if (!session_id()) 
session_start();