我想单击详细信息页面的按钮时,使WP在会话中存储所有选项,并在会话中保存实际信息,然后当他再次访问页面时,将在会话中选择值,并设置是否找到任何值。 />
可以在WP中完成吗?
如果可以,怎么办? br />
<input class="car_color" type="checkbox" name="car_color" value="1" />
<input class="car_color" type="checkbox" name="car_color" value="2" />
<input class="car_color" type="checkbox" name="car_color" value="8" />
<input class="car_color" type="checkbox" name="car_color" value="4" />
<input class="car_color" type="checkbox" name="car_color" value="6" />
我没有在表单中使用“提交”按钮,而是通过AJAX在输入更改时进行处理的。我有一个指向详细信息页面的链接:
<a class="detail-info-link" href="<?php echo $url ?>">
任何想法我该如何在会话中存储我的值并在浏览器中重新访问/重新加载/返回按钮时调用它们?
我需要能够读取会话中存储的内容和通过Javascript进行搜索并通过已经运行良好的ajax触发搜索功能。
我只需要存储(可能在按明细按钮的href中进入$ link并读取和发送会话变量(如果存在) 。
#1 楼
默认情况下,wordpress中未启用会话,如果您要激活php会话,请在functions.php
的开头添加此代码:看一下有关会话的PHP文档。更新:
还有第二个答案,在我看来,它也很有价值-不幸的是它被删除了,我很高兴-在此处添加信息。答案是使用WP Session Manager这个由@eamann编写的插件作为替代解决方案。
我阅读了一些有关该插件的内容,但从未使用过,因为-到目前为止-我坚持使用PHP会话-从未使用过我无法使用它们的问题。这是插件作者本人的声明/评论,我发现了一些可能的优点。
评论
我可以请您在这里查看与自定义字段相关的问题:wordpress.stackexchange.com/questions/265852/…吗?
–艾斯提克·艾哈迈德(Istiaque Ahmed)
17年5月4日20:00
#2 楼
在函数中添加此代码。php<?php
function tatwerat_startSession() {
if(!session_id()) {
session_start();
}
}
add_action('init', 'tatwerat_startSession', 1);
#3 楼
我将解释如何使用WordPress原生PHP会话设置用户名会话。您可以将此逻辑应用于您的问题。将其添加到您的functions.php文件中
if (!session_id()) {
session_start();
}
if ( isset( $_POST['wp-submit'] ) ){
$_SESSION['username']=$_POST['log'];
}
$ _POST ['log']是从wordpress登录表单中引用用户名输入框。用户登录时,用户名将存储到$ _SESSION ['username']。
对于您来说,您可以将'log'更改为具有'car_color'的表单变量名称。
稍后通过
$username=$_SESSION['username'];
在其他一些php文件中引用用户名
#4 楼
也许Wordpress中没有平常的会议...无论如何,Wordpress知道用户的概念。您可以使用功能add_user_meta
,update_user_meta
,get_user_meta
和delete_user_meta
管理与特定用户有关的信息。您需要什么,然后用Ajax调用。评论
只有在用户登录后才能使用。
–蒂姆·霍尔曼(Tim Hallman)
16年10月10日在18:31
#5 楼
在接收AJAX请求的PHP页面上,像这样设置$ _SESSION。$car_color = <user selected form input data>;
$_SESSION['car_color'] = $car_color;
访问$ _SESSION变量
if(isset($_SESSION['car_color'])) {
$value = $_SESSION['car_color'];
} else {
$value = 'Please select a car color.';
}
本教程将详细介绍如何正确设置和处置会话。
#6 楼
您必须首先在WordPress中启动会话,但不能像在WordPress中那样启动会话。在启动会话之前,您需要检查某个插件是否较早启动了会话,因为您可能会遇到意外问题。因此,您需要为此使用一些算法。
if (version_compare(PHP_VERSION, '7.0.0', '>=')) {
if(function_exists('session_status') && session_status() == PHP_SESSION_NONE) {
session_start(apply_filters( 'cf_geoplugin_php7_session_options', array(
'cache_limiter' => 'private_no_expire',
'read_and_close' => false
)));
}
}
else if (version_compare(PHP_VERSION, '5.4.0', '>=') && version_compare(PHP_VERSION, '7.0.0', '<'))
{
if (function_exists('session_status') && session_status() == PHP_SESSION_NONE) {
session_cache_limiter('private_no_expire');
session_start();
}
}
else
{
if(session_id() == '') {
if(version_compare(PHP_VERSION, '4.0.0', '>=')){
session_cache_limiter('private_no_expire');
}
session_start();
}
}
我还在此处添加了对旧PHP版本的支持。
评论
如果答案对您有所帮助,请考虑接受。请参阅»当有人回答我的问题时我该怎么办?”和/或»“为什么投票很重要?”,请参见帮助中心。我认为下面的链接将为您提供帮助。 wordpress.stackexchange.com/questions/105453 / ...