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

我想单击详细信息页面的按钮时,使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并读取和发送会话变量(如果存在) 。

评论

如果答案对您有所帮助,请考虑接受。请参阅»当有人回答我的问题时我该怎么办?”和/或»“为什么投票很重要?”,请参见帮助中心。
我认为下面的链接将为您提供帮助。 wordpress.stackexchange.com/questions/105453 / ...

#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_metaupdate_user_metaget_user_metadelete_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版本的支持。