如何在Wordpress中使用自己的(自定义)会话值?
例如:$_SESSION['myname']="4lvin"
我已经session_start()
在所有需要的页面上插入了以下内容。
<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>
但不能在全球范围内运作。
只是在自我页面上工作。
不能从另一个页面全局调用(使用相同的逻辑)。
如何在Wordpress中使用自己的(自定义)会话值?
例如:$_SESSION['myname']="4lvin"
我已经session_start()
在所有需要的页面上插入了以下内容。
<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>
但不能在全球范围内运作。
只是在自我页面上工作。
不能从另一个页面全局调用(使用相同的逻辑)。
Answers:
编辑: “下面的插件已不可用,因此请使用插件代替:WordPress会话插件 ”
有一个很好的WordPress插件改编自CodeIgniter Session类: WP Sessions Plugin。
激活插件时,您可以$session
从主题中的任何位置开始使用对象($session
对象只要是全局对象)。例如,要将$ session对象用于header.php
文件,只需添加以下代码:
global $session;
如果您是插件开发人员,并且想要将该插件与您的插件配合使用,则也可以在软件包中找到独立版本。插件文档为插件开发人员提供了有关如何适应项目的更多信息。
这对于主题和插件开发人员都是有用的功能。
您可以像这样添加会话数据:
// 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
以使其自身保持无状态。
但是,如果您确实要使用会话,请尝试session_start()
在wp-config.php
文件开头添加。每当WP启动时,这(希望)将启动会话,因此您将能够$_SESSION
在系统中的其他位置设置和读取变量。
wp-cofnig.php
未涉及更新。
wp-config.php
将不会更新,否则您可能会失去数据库连接和您手动设置的其他参数。
Wordpress确实支持它。
您需要在以下内容的顶部添加以下行functions.php
if ( ! session_id() ) {
session_start();
}