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!
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
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/
Pour ce que je dois faire, la meilleure réponse consiste à:
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:
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é
Wordpress ne semble utiliser aucune session.
La meilleure façon de s'y prendre est d'utiliser les crochets d'action fournis.
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.
Accrocher une fonction avec session_start()
sur wp_loaded
semble fonctionner dans ce cas.
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/
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();