2012-03-23 178 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();