如何在WordPress中使用我自己的自定义会话值?

时间:2011-11-01 作者:夏期劇場

如何在Wordpress中使用自己的(自定义)会话值
例如:$_SESSION[\'myname\']="4lvin"

我已经插入了session_start() 在所有页面,我需要如下。

<?php
session_start();
$_SESSION[\'myname\'] = "4lvin";
?>
但不能在全球范围内运作
只是在“自我”页面上工作
它不能从其他页面全局调用(使用相同的逻辑)。

4 个回复
最合适的回答,由SO网友:kuzey beytar 整理而成

EDIT: “下面的插件不再可用,请改用该插件:WordPress Session Plugin“”

有一个很好的WordPress插件改编自CodeIgniter会话类:WP Sessions Plugin.

激活插件后,可以开始使用$session 从主题中的任何位置创建对象($session 对象,只要是全局的)。例如,将$session对象用于header.php 文件,只需添加以下代码:

global $session;
如果您是一名插件开发人员,并且希望将此插件与您的插件相结合,那么您也可以在软件包中找到独立版本。插件文档为插件开发人员提供了有关如何适应项目的更多信息。

以下是一些对主题和插件开发人员都有用的函数。

你可以add 会话数据如下:

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

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

$session->set_userdata( $array );
retrieve 会话数据:

$session->userdata( \'username\' );
get all 会话数据:

$session->all_userdata(); // returns array
remove 会话中的一个项目:

$session->unset_userdata( \'username\' );
remove more items 来自会话:

$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"]
要达到第二个键:

[session key="user_data" sec_key="display_name"]
我希望这对某人有所帮助。

SO网友:EAMann

WordPress不使用会话,这就是会话变量不工作的原因。

事实上,如果定义了某些变量,WordPress will actually destroy $_SESSION to keep itself stateless.

但如果您确实想使用会话,请尝试添加session_start() 在您的wp-config.php 文件这将(希望)在WP启动时启动会话,这样您就可以设置并读取$_SESSION 系统中其他地方的变量。

SO网友:budiony

一个简单的解决方案,无需使用插件或修改wp-config.php 是更新主题的functions.php 并在开头插入以下内容:

<?php

 //WordPress functions.php file
  if(!session_id()) {           
    session_start();            
  }
functions.php (或所谓的主题函数文件)是WordPress主题中自动包含的模板,并执行like a plugin 用于WordPress站点。此外,如果您的网站上安装了多个主题,请修改functions.php 只会影响选定的主题,而不会影响所有主题may not 要启用会话)。

SO网友:Alvin

Wordpress does support it.

您需要在functions.php

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

结束

相关推荐

Multi-site User Sessions

我有一个客户想要创建几个WordPress站点,并在顶部使用一个“站点切换器”,有点像前面的。网我知道在WP 3中,您可以在同一个安装上创建多个博客,但如何让登录到一个博客的用户登录到WordPress安装中的所有博客?这可能吗?