wordpress 3.0 中使用session

wordpress在处理query variables时,会对$_GET和$_POST变量进行处理,大概是这样子:对$_GET和$_POST数组进行遍历,将数据的key处理为php变量,举个例子,有一个值为$_GET['category_name'] or $_POST['category_name']的query variables,wordpress处理后就会把它变为$category_name变量,这样就可以使用$category_name变量了。

然后就会华丽的忽略SESSION。在3.0版本中在wp-includes/load.php下第23行,唯独没有Session变量!
[cce_php]
// Variables that shouldn’t be unset
$no_unset = array( ‘GLOBALS’, ‘_GET’, ‘_POST’, ‘_COOKIE’, ‘_REQUEST’, ‘_SERVER’, ‘_ENV’, ‘_FILES’, ‘table_prefix’ );
[/cce_php]

那我要想在wordpress中使用SESSION,该怎么办咧?

我们可以使用Filter Reference,手动开启SESSION

具体代码如下,例如我想在single模板下特定的文章页面使用Session

[cce]
//开启SESSION
add_action('init','session_manager');
function session_manager(){
session_start();
}
add_filter('single_template','session_single');
function session_single(){
//判斷特定的文章頁面
if(is_single('108') || is_single('106') ||is_single('74') || is_single('131') || is_single('128')){
$_SESSION[session_id()] = true;
}
}
[/cce]

参考资源:

Enabling Sessions in WordPress 3.0

How To: Enable the Use of Sessions On Your WordPress Blog

wordpress对请求的处理 简单架构

WordPress Code Flow

wp-setting.php文件详解

“wordpress 3.0 中使用session”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注