我正在为 Wordpress 开发一个前端提交页面,该页面分多个步骤工作。
所以我在页面上有一个表格,它在几个阶段收集数据并在每个阶段之后发布。
我可以使用 GET 很好地做到这一点,但我不希望在 URL 中查看变量,因为人们很容易在博客上编辑他们没有写的其他帖子。
我将如何使用这种方法将帖子 ID 从一个阶段传递到另一个阶段?对于多页表单有更好的方法吗?
正如您在下面看到的,我需要以某种方式在设置步骤和第一步之间传递帖子 ID,但我不希望它作为 GET 出现在 URL 中。
更新:
好的,所以似乎在 if else 语句中确认阶段已完成的步骤是我丢失所有 POST 和 SESSION 变量的地方,我现在已经更改了它,以便它显示一个带有隐藏输入而不是继续的表单GET 请求的链接。更新了 Pastebin - http://pastebin.com/LpHrHwrE
这是我正在使用的代码:http: //pastebin.com/8b4qMNrm
PHP
<?php
if(isset($_GET['step'])){
$step = $_GET['step'];
if ($step == "setup"){
$setup = ""; $step_one ="";
if(isset($_POST['submit'])){
$guide_title = trim($_POST['guide_title']);
if($guide_title != "" ){
$post = array(
'post_title' => $guide_title,
);
$post_ID = wp_insert_post( $post, $wp_error );
$stage_complete = true;
} else {
$message = "Please complete all required fields.";
}
} else {
$guide_title = "";
$stage_complete = false;
}
} else if($step == "one"){
$setup ="c"; $step_one = "";
if(isset($_POST['submit'])){
$guide_new_title = trim($_POST['guide_new_title']);
if($guide_new_title != ""){
$my_post = array();
$my_post['ID'] = $guide_id;
$my_post['post_title'] = $guide_new_title;
wp_update_post( $my_post );
$stage_complete = true;
} else {
$message = "Please complete all required fields.";
}
} else {
$guide_title = "";
$stage_complete = false;
}
}
} else {
$step = "start";
}
if(empty($message)){
$message = "";
}
?>
HTML
<?php if($step == "start"){ ?>
<form action="<?php the_permalink() ?>?step=setup" method="POST" class="formee">
<input class="button" type="submit" name="submit" value="Go To Post Setup">
</form>
<?php } else if($step == "setup"){ ?>
<?php echo $message; if($stage_complete == false){ ?>
<form action="<?php the_permalink(); ?>?step=setup" method="POST" class="formee">
<label>Guide Title <em class="formee-req">*</em></label>
<input type="text" name="guide_title" required="required" value="<?php echo htmlentities($guide_title); ?>">
<input class="button" type="submit" name="submit" value="Setup Post">
</form>
<?php } else { $step_one = "c" ?>
<p>Post Has Been Setup.</p>
<a href="<?php the_permalink(); ?>?step=one" class="button">Continue To Step One →</a>
<?php } ?>
<?php } else if($step == "one"){ ?>
<?php echo $message; if($stage_complete == false){ ?>
<form action="<?php the_permalink(); ?>?step=one" method="POST" class="formee">
<label>Guide Title <em class="formee-req">*</em></label>
<input class="button" type="submit" name="submit" value="Rename Post Title">
</form>
<?php } else { $step_one = "c" ?>
<p>Post Has Been Renamed.</p>
<a href="index.php?step=finish" class="button">Finished →</a>
<?php } ?>
<?php } ?>