web-dev-qa-db-ja.com

Wordpressで独自のカスタムセッション値を使用する方法

Wordpressで自分の(カスタム)セッション値を使用する方法を教えてください。
例:$_SESSION['myname']="4lvin"

私は以下のように私が必要とするすべてのページに既にsession_start()を挿入しました。

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

しかし、地球規模では機能しません。
セルフページで作業しているだけです。
(同じロジックを使用して)別のページからグローバルに呼び出すことはできません。

15
夏期劇場

編集: "以下のプラグインは使用できません。SOプラグインを挿入してください: WordPressセッションプラグイン "

CodeIgniterセッションクラスから改作した良いWordPressプラグインがあります: WP Sessions Plugin

プラグインを有効にすると、テーマのどこからでも$sessionオブジェクトを使用することができます(グローバルである限り$sessionオブジェクト)。たとえば、$ sessionオブジェクトをheader.phpファイルに使用するには、単に次のコードを追加します。

global $session;

あなたがプラグイン開発者であり、このプラグインをあなたのものに適応させたいのであれば、パッケージの中にstandalone versionを見つけることができます。プラグインのドキュメンテーションは、あなたのプロジェクトに適応する方法について、プラグイン開発者向けのより多くの情報を提供します。

これはテーマ開発者とプラグイン開発者の両方にとって便利な機能です。

次のように add sessionデータを追加できます。

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

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

$session->set_userdata( $array );

検索 セッションデータ:

$session->userdata( 'username' );

すべて取得 セッションデータ:

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

セッションから 削除 1項目

$session->unset_userdata( 'username' );

さらにアイテムを削除する セッションから:

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

Flashdata を使用することもできます。これは、次のサーバー要求でのみ使用可能になり、その後自動的に消去されるセッションデータです。これらは情報またはステータスメッセージに使用すると非常に便利です(例:「商品が削除されました」)。

// 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' );

セッションを破棄する

$session->sess_destroy();

このプラグインは shortcodes もサポートしています。投稿やページにセッションデータを印刷できます。

[session key="username"]

2番目のキーに到達するには

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

これが誰かに役立つことを願っています。

13
dino

WordPressはセッションを使用しないため、セッション変数が機能しません。

実際のところ、特定の変数が定義されている場合、 WordPressは実際には自身をステートレスに保つために$_SESSIONを破棄します

しかし、本当にセッションを使いたい場合は、wp-config.phpファイルの先頭にsession_start()を追加してみてください。これは(うまくいけば)WPが起動するときはいつでもセッションを開始するでしょう、それであなたはそれからシステムの他の場所であなたの$_SESSION変数を設定して読むことができるでしょう。

6
EAMann