我不完全理解WordPress编程,但是使用一些在线文章并查看各种论坛(包括这一篇)我已经设法在他们自己的WP页面中设置了一系列表格。这个想法是,当第一个表单完成后,数据将被提交到第二个表单页面。第二页的页面模板抓取数据并将其存储在会话变量中以供以后使用(例如,显示之前输入的一些数据以供参考。使用下面显示的代码我已经有了这个工作。
我的问题是我还希望用户能够从第二个表单页面返回到第一个表单页面以编辑先前输入的数据。我认为这被称为“粘性”形式。
我如何实现这一目标?
目前,如果我在一系列表单页面中继续前进,我的会话代码可以工作但是如果我从表单2导航回到表单1数据丢失。
在我的functions.php文件中,我有以下代码启动会话:
add_action('init', 'myStartSession', 1);
add_action('wp_logout', 'myEndSession');
add_action('wp_login', 'myEndSession');
function myStartSession() {
if(!session_id()) {
session_start();
}
}
function myEndSession() {
session_destroy ();
}
在表单页面2的页面模板中,我有代码从第1页抓取传入数据并将其存储在会话变量中:
<?php
/* Template Name: Form Page 2 */
$_SESSION['text_1'] = $_REQUEST['text_1'];
$_SESSION['text_2'] = $_REQUEST['text_2'];
$_SESSION['text_3'] = $_REQUEST['text_3'];
$_SESSION['text_4'] = $_REQUEST['text_4'];
get_header();
... etc.
在表单上Page 1我使用了一个插件,允许我插入PHP代码片段作为短代码。
在表单第1页的textarea中,我添加了一个包含以下PHP的短代码:
<textarea id="text_1" name="text_1" required rows="5">[php snippet=9] </textarea>
短代码(代码段= 9):
if (isset($_SESSION['text_1'])) {
echo $_SESSION['text_1'];
}
当我从表单页面1移动到表单页面2时,这是有效的(可以访问会话变量中的数据但是,如果我回去(比如说,我在第2页,并且想要返回到页面上编辑数据) 1)数据丢失(它没有显示在textarea中)。
我不确定这是否是在WP中使用会话的正确方法,或者是否有更好的方法来执行此操作。
希望有人可以帮助我。