web-dev-qa-db-ja.com

WordPressプラグイン開発におけるセッション

私はセッションがワードプレスで無効になっていたのだろうかと思いました。私は、ワードプレスでセッション変数を使用することに関するいくつかの情報を見つけることを試みます。私は、ワードプレスサイトでセッション変数を実装するために以下の方法を試しました。

私はこのようにしてみました。

<?php 
session_start();

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

?>

私が$_SESSION['firstname']をエコーし​​ているのであれば、それは起動しません。だから私はそれがサポートしていない理由を見つけるためにグーグルしました。

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

add_action('init', 'register_session');

上記の方法を試して実装しましたが、うまくいきません。

今のところ私はセッションをプラグインに統合しているので、コアファイルを編集したくありません。カスタムプラグイン開発をしているからです。

ワードプレスプラグインでセッションを有効にする方法。任意の提案は素晴らしいだろう

ありがとう。

3

あなたのコードは間違っているようには見えません、それは私がどうするかということです - 私の 答え ここを見てください。それで問題はあなたのセッションが始まったことでしょうか?これをデバッグしてみてください。

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

もう1つの推奨される手順は、add_action()呼び出しの優先順位を下げることです。

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

他のアクションや機能が必要とする前に、セッションの準備ができていることを確認するためだけに使用してください。

4
Nicolai

トランジェント で同じ機能を実現できますか?すなわち:

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

その場合、セッションは必要ありません。

1
Sam Wilson

あなたのプラグインでは、セッション変数を格納するためにwpフックを使用してください。

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

今、あなたはどこからでもそれにアクセスすることができます。例えば:

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