Comment utiliser ma propre valeur de session personnalisée dans Wordpress?

14

Comment utiliser ma propre valeur de session (personnalisée) dans Wordpress?
Par exemple: $_SESSION['myname']="4lvin"

J'ai déjà inséré session_start() dans toutes les pages dont j'ai besoin comme suit.

<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>

Mais ne travaillez pas dans le monde entier.
Je travaille juste sur la page personnelle.
Il n'est PAS appelable de manière globale à partir d'autres pages (en utilisant la même logique).

    
posée 夏期劇場 01.11.2011 - 20:25

3 réponses

12

EDIT: "LE PLUGIN INFÉRIEUR N'EST PLUS DISPONIBLE. VEUILLEZ UTILISER CE PLUGIN À LA LETTRE: Plugin de session WordPress "

Il existe un bon plugin WordPress adapté de la classe CodeIgniter Session: plug-in WP Sessions .

Lorsque vous activez le plug-in, vous pouvez commencer à utiliser l'objet $session à partir de n'importe où dans votre thème (objet $session aussi long que global). Par exemple, pour utiliser l'objet $ session dans le fichier header.php , ajoutez simplement ce code:

global $session;
  

Si vous êtes un développeur de plug-in et souhaitez adapter ce plug-in avec le vôtre, vous pouvez également trouver la version autonome dans le package. La documentation du plug-in fournit aux développeurs de plug-ins plus d'informations sur la manière de s'adapter à votre projet.

Voici quelques fonctions utiles pour les développeurs de thèmes et de plugins.

Vous pouvez ajouter des données de session comme suit:

// One value
$session->set_userdata( 'username', 'john' );

// Passing array
$array = array(
    'username' => 'john',
    'email'    => '[email protected]'
);

$session->set_userdata( $array );

Pour récupérer les données de session:

$session->userdata( 'username' );

Pour obtenir toutes les données de session:

$session->all_userdata(); // returns array

Pour supprimer un élément de la session:

$session->unset_userdata( 'username' );

Pour supprimer d'autres éléments de la session:

$array = array(
    'username' => '',
    'email'    => ''
);
$session->unset_userdata( $array );

Vous pouvez également utiliser Flashdata , qui sont des données de session qui ne seront disponibles que pour la prochaine demande de serveur. Ces données sont ensuite automatiquement effacées. Cela peut être très utile lorsque vous les utilisez pour des informations ou des messages d’état (par exemple, «Le produit a été supprimé»).

// Add Flashdata
$session->set_flashdata( 'item', 'value' );

// Retrieve Flashdata
$session->flashdata( 'item' );

// Preserving flashdata 
// (if you need to preserve flashdata through an additional request, 
// you can use this function):
$session->keep_flashdata( 'item' );

Pour détruire la session:

$session->sess_destroy();

Le plug-in prend également en charge les codes abrégés . Vous pouvez imprimer toutes les données de session sur vos publications ou pages:

[session key="username"]

Pour atteindre la deuxième clé:

[session key="user_data" sec_key="display_name"]

J'espère que cela aidera quelqu'un.

    
réponse donnée dino 15.11.2012 - 19:58
6

WordPress n'utilise pas de sessions, c'est pourquoi vos variables de session ne fonctionnent pas.

En fait, si certaines variables sont définies, WordPress détruira réellement $_SESSION pour se maintenir sans état. .

Mais si vous voulez vraiment utiliser des sessions, essayez d'ajouter session_start() au début de votre fichier wp-config.php . Cela va (espérons-le) démarrer les sessions au démarrage de WP. Vous pourrez ainsi définir et lire vos variables $_SESSION ailleurs dans le système.

    
réponse donnée EAMann 01.11.2011 - 22:29
-5

Wordpress le prend en charge .

Vous devez ajouter les lignes suivantes en haut de functions.php

if ( ! session_id() ) {
    session_start();
}
    
réponse donnée Alvin 02.11.2011 - 07:53

Lire d'autres questions sur les étiquettes