我正在为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 } ?>
答案 0 :(得分:1)
只需在表单中使用隐藏字段,如下所示:
<input type="hidden" name="postID" value="<?= $theID ?>" />
然后使用POST
而非GET
表单。
或者您可以使用会话变量:
session_start();
$_SESSION['postID'] = $theID;
// Access via $_SESSION['postID']