2012-03-23 3 views
3

Я нашел кучу статей, рассказывающих об использовании сеансов. Из того, что мне удалось найти, можно добавить действие init. Я придерживался этой статьи http://devondev.com/2012/02/03/using-the-php-session-in-wordpress/проблемы с wordpress session

но, должно быть, мне что-то не хватает. каждый раз, когда я вызываю страницу с моим плагином, нет идентификатора сеанса

Я что-то упустил?

спасибо за любую помощь

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 (" session start \ n ");" не должно быть error_log ('session start \ n'); ? – ninja

+0

no У меня нет ошибок. ErrorLog - это функция в моих файлах, и я получаю сессию, начинающуюся каждый раз в моем файле журнала. – randy

+0

Вызов session_start установит глобальный $ _SESSION, поэтому, если вы вызываете его до запуска wp-settiings и register_globals, вы потеряете сессию переменные. –

ответ

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-config.php перед Wp-настройки (например в верхней части WP-config.php)

if (!session_id()) 
session_start(); 
Смежные вопросы