web-dev-qa-db-fra.com

Gestion de session Wordpress

Je suis en train de créer un site en utilisant Wordpress et j'aimerais profiter de ses sessions. Mais je ne trouve pas de plugins, ni même de documentation. Avez-vous des suggestions ou des références avant de commencer à le pirater?

Remarque: je demande si et comment WP utilise les sessions standard PHP lui-même, et non pas comment ajouter PHP sessions, par exemple. en utilisant session_start (). Apparemment, tout état que WP maintient est accompli par d'autres moyens. Donc, si je veux utiliser PHP sessions, je dois l’ajouter et le maintenir moi-même entièrement, en utilisant des techniques comme celles du fil de discussion.

Merci a tous!

21
dkretz

WordPress ne semble pas appeler session_start() car il veut être sans état Et si register_globals est défini, il détruit automatiquement votre $_SESSION

15
Steve

C'est une très mauvaise idée de modifier les fichiers WP Core pour pouvoir utiliser des sessions. Le meilleur moyen que j’ai trouvé est d’appeler le hook d’action session_start() from init.

function kana_init_session() {
  session_start();
}

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

Vous pouvez le placer dans le fichier functions.php de votre thème.

Un article détaillé peut être trouvé ici: http://www.kanasolution.com/2011/01/session-variable-in-wordpress/

17
Andrey Rudenko

Pour ce que je dois faire, la meilleure réponse consiste à:

  1. Pour permettre au cookie de WordPress de persister dans les sous-domaines, installez le cookie racine plugin .
  2. sub1.domain.com a wordpress; sub2.domain.com est un autre site. Sur l'autre site ( sub2 ), j'ai lu les cookies pour identifier qui est l'utilisateur et si l'utilisateur est connecté.

Mes cookies sont les suivants:

[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea
[wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700

En utilisant PHP, je peux passer en boucle sur les cookies, analyser les paires key=>value. Ces cookies me font savoir que [mshaffer] a un cookie stocké sur wordpress, et est également authentifié en tant que logged_in. L'expiration du cookie est 1255298821.

Dans sub2 , je peux interroger la base de données de wordpress et récupérer les informations de l'utilisateur:

SELECT * FROM `wp_users` WHERE user_login = 'mshaffer' ... grab user_id , user_email de cette requête

SELECT * FROM `wp_usermeta` WHERE user_id = '$user_id' ... récupère beaucoup d'autres données de wp

Avec cette information, je peux ajouter à ma variable/cookie sub2 session et faire ce que je veux avec les données. Je peux identifier si je suis connecté et mon nom d'utilisateur ... ce qui me permet de récupérer beaucoup de données différentes. Je peux maintenant utiliser l'authentification WordPress dans mon sub2.domain.com et rediriger en conséquence.

monte

{X:

5
mshaffer

Pensez à utiliser API WordPress Transient

Les valeurs stockées à l'aide de l'API transitoire sont visibles pour tous les utilisateurs, et pas seulement pour l'utilisateur actuel. En fonction de l'identifiant unique utilisé pour extraire le transitoire, vous pouvez attribuer à chaque utilisateur un identifiant unique, permettant ainsi à un transitoire de se comporter comme une session.

Autres considérations:

  • En fonction de la configuration des utilisateurs avec le cache d'objets, etc., les transitoires peuvent Ne pas toujours être stockés dans la base de données (par exemple memcached) mémoire rapidement (lors de l'utilisation de memcached).

  • De plus, il semble que WP ne fait pas de récupération automatique des ordures pour Personnes en transition: https://wordpress.stackexchange.com/questions/6602/are-transients -garbage-ramassé

5
farinspace

Wordpress ne semble utiliser aucune session. 

La meilleure façon de s'y prendre est d'utiliser les crochets d'action fournis.

2
Anraiki

Mettez ce code dans wp-config.php à la première ligne:

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

Mettez ce code dans header.php à la première ligne de theme:

session_start();

Ensuite, toutes les variables de session seront conservées.

1
meddyman

Accrocher une fonction avec session_start() sur wp_loaded semble fonctionner dans ce cas.

1
vmassuchetto

Avez-vous vérifié la solution ici cela peut fonctionner pour ici et son moyen facile

http://thedigilife.com/wordpress-how-to-set-session-custom-variable-while-login/

1
Chirag Kalani

Si vous voulez utiliser vos propres valeurs de session, Wordpress le prend en charge .

Vous devez ajouter les lignes suivantes en haut de wp-config.php

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

Ajoutez ensuite la ligne suivante en haut de header.php

session_start();
0
Alvin