web-dev-qa-db-fra.com

SESSION in WordPress Plugin Development

Je me demandais si la session était désactivée dans wordpress. J'essaie de trouver des informations sur l'utilisation de variables de session dans wordpress. J'ai essayé la méthode suivante pour implémenter des variables de session dans le site wordpress.

J'ai essayé de cette façon.

<?php 
session_start();

$_SESSION['firstname'] = $_POST['firstname'];

?>

Si je fais écho le $_SESSION['firstname'] n'est pas venu. Alors j'ai cherché sur Google pour trouver la raison pour laquelle cela ne fonctionne pas.

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

add_action('init', 'register_session');

Cette méthode ci-dessus, j'ai essayé et mis en œuvre, mais cela ne fonctionne pas non plus.

En ce moment, j'intègre une session dans un plugin, donc je ne veux pas éditer le fichier core. Parce que je fais le développement de plugin personnalisé.

Comment activer la session dans le plugin wordpress. Toute suggestion serait géniale

Merci.

3

Votre code ne semble pas être faux, c'est juste comment je le ferais - voir ma répondre ici. La question est donc de savoir si votre session commence? Essayez de déboguer ceci:

// do you have a session id
$s_id = session_id();
print_r($s_id);

// can you declare a bogus session variable, yours might just be empty
$_SESSION['bogus'] = 'bogus';
print_r($_SESSION['bogus']);

Une autre étape conseillée consiste à réduire la priorité de l'appel add_action():

add_action('init', 'register_session', 1);

juste pour vous assurer que votre session est prête avant d'être utilisée par une autre action/fonction.

4
Nicolai

La même fonctionnalité pourrait-elle être obtenue avec Transitoires ? c'est à dire.:

set_transient( 'username', $_POST['firstname'], MINUTE_IN_SECONDS );

Les séances ne sont pas nécessaires alors.

1
Sam Wilson

Dans vos plugins, utilisez le crochet wp pour stocker la variable de session.

add_action('wp', 'start_my_session');
function start_my_session() {
    session_start();
    $_SESSION['myvar'] = 'this is my var';
}

Maintenant, vous pouvez y accéder depuis n'importe où. par exemple:

add_action('wp_footer', 'show_session_var');
function show_session_var() {
    if(isset($_SESSION['myvar'])) echo $_SESSION['myvar'];
}
0
saikat074