在If语句之间传递表单变量

时间:2013-05-14 21:08:18

标签: wordpress forms post if-statement

我正在为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 &rarr;</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 &rarr;</a>
    <?php } ?>
    <?php } ?>

1 个答案:

答案 0 :(得分:1)

只需在表单中使用隐藏字段,如下所示:

<input type="hidden" name="postID" value="<?= $theID ?>" />

然后使用POST而非GET表单。

或者您可以使用会话变量:

session_start();
$_SESSION['postID'] = $theID;

// Access via $_SESSION['postID']