0

我正在为 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 } ?>
4

1 回答 1

1

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

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

然后使用POST而不是GET用于形式。

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

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

// Access via $_SESSION['postID']
于 2013-05-15T06:37:23.877 回答