wordpress 3.0 中使用session

目录
wordpress在处理query variables时,会对$_GET和$_POST变量进行处理,大概是这样子:

对$_GET和$_POST数组进行遍历,将数据的key处理为php变量

举个例子,有一个值为

$_GET['category_name']

$_POST['category_name']的query variables

wordpress处理后就会把它变为$category_name变量,这样就可以使用$category_name变量了。

然后就会华丽的忽略SESSION。在3.0版本中在wp-includes/load.php下第23行,唯独没有Session变量!


// Variables that shouldn't be unset

$no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );

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

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

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

//开启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;
}
}

参考资源:

Enabling Sessions in WordPress 3.0

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

wordpress对请求的处理 简单架构

WordPress Code Flow

wp-setting.php文件详解