問題描述
如何在 Wordpress 中使用自己的 (自定義) 會話值?例如:$_SESSION['myname']="4lvin"
我已經在所有頁面上插入了 session_start(),我需要如下。
<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>
但不工作 Global-wise 。只是在自己的頁面上工作。它不是 call-able 在全球從另一個頁面 (使用相同的邏輯) 。
最佳解決方案
編輯:「下面的插件不可用,所以請使用該插件:WordPress Session Plugin」
有一個很好的 WordPress 插件改編自 CodeIgniter Session 類:WP Sessions Plugin 。
激活插件時,您可以從主題中的任何位置開始使用 $session 對象 ($session 對象只要全局) 。例如,要在 header.php 文件中使用 $ session 對象,只需添加以下代碼:
global $session;
If you are a plugin developer and you want to adapt this plugin with yours, you can find standalone version in the package as well. Documentation of the plugin gives more information for plugin developers about how to adapt to your project.
這是主題和插件開發人員的一些有用的功能。
您可以添加如下所示的會話數據:
// One value
$session->set_userdata( 'username', 'john' );
// Passing array
$array = array(
'username' => 'john',
'email' => 'john@gmail.com'
);
$session->set_userdata( $array );
檢索會話數據:
$session->userdata( 'username' );
獲取所有會話數據:
$session->all_userdata(); // returns array
從會話中刪除一個項目:
$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();
該插件還支持短碼。您可以在您的帖子或頁面上打印任何會話數據:
[session key="username"]
達到第二個關鍵:
[session key="user_data" sec_key="display_name"]
我希望這有助於某人。
次佳解決方案
WordPress 不使用會話,這就是為什麼你的會話變量不工作。
事實上,如果定義了某些變量,WordPress 實際上會破壞 $_SESSION 來保持自身的無狀態。
但是,如果您真的想使用會話,請嘗試在 wp-config.php 文件的開頭添加 session_start()。每當 WP 啓動時,這將 (希望) 啓動會話,因此您可以在系統中的其他位置設置和讀取 $_SESSION 變量。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。