如何在WP会话中存储和接收变量?


28

我有一个带有一些复选框和输入框选择框的表单,它通过ajax调用显示用户想要的内容。问题是,当用户单击该项目并显示详细信息页面,然后决定返回上一页时,他需要单击并再次选择其先前的选择。

我想让WP在单击详细信息页面的按钮时将所有选项存储在会话中,并在会话中保存实际信息,然后当他再次访问该页面时,这些值将在会话中记录,并设置是否为找到了。

可以在WP中完成吗?

如果是,怎么办?

让我们简化一下,说我们的表单中有这样的内容:

<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在输入更改时进行处理。

在我通过ajax获得的结果中,我有一个指向详细信息页面的链接:

<a class="detail-info-link" href="<?php echo $url ?>">

知道如何在浏览器中重新访问/重新加载/后退按钮时将值存储在Session中并调用它们吗?

我需要能够读取会话存储的内容并通过?Javascript使用它?并通过已经运行良好的ajax触发我的搜索功能。

我只需要存储(可能在按明细按钮的href中进入$ link并读取和发送会话变量(如果存在)之前)。


如果答案对您有所帮助,请考虑接受。请参阅» 有人回答我的问题该怎么办?«和/或» 为什么投票很重要?«,可在帮助中心获得有关WordPress开发模型的更多信息。
Nicolai 2015年

我认为下面的链接将为您提供帮助。wordpress.stackexchange.com/questions/105453/...
Vivekanand萨拉斯瓦蒂

Answers:


32

默认情况下,wordpress中未启用会话,如果要激活php会话,请在您的开头添加functions.php

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

现在,您可以$_SESSION['your-var'] = 'your-value';用来设置会话变量。看一下session上的PHP文档



更新:

还有第二个答案,在我看来,它也很有价值-不幸的是它被删除了,我在这里重新添加信息。答案是将WP Session Manager称为@eamann编写的插件,作为替代解决方案。
我阅读了一些有关该插件的内容,但从未使用过它,因为-到目前为止-我坚持使用PHP会话-从未遇到无法使用它们的问题。这是插件作者本人的声明/评论,我发现了一些可能的优点。


我可以请您在这里查看与自定义字段相关的问题:wordpress.stackexchange.com/questions/265852/…吗?
Istiaque Ahmed

1

在您的functions.php中添加此

<?php

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

add_action('init', 'tatwerat_startSession', 1);

1

我将解释如何使用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”的表单变量名称。

稍后在其他一些php文件中引用用户名

$username=$_SESSION['username'];


0

在接收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.';
}

本教程将详细介绍如何正确设置和处置会话。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.