Я работаю над страницей отправки переднего конца Wordpress, которая работает в нескольких шагах.Передача переменных формы между If Statement
Таким образом, у меня есть форма на странице, и она собирает данные за несколько этапов и публикует их после каждого этапа.
Я могу сделать это с использованием GET, но я не хочу, чтобы переменные отображались в URL-адресе, потому что людям было бы легко редактировать другие сообщения в блоге, которые они не пишут.
Как бы я пропустил идентификатор сообщения с этапа на сцену, используя этот метод? Есть ли лучший способ для нескольких форм страницы?
Как вы можете видеть ниже, мне нужно передать идентификатор сообщения между шагом настройки и шагом один так или иначе, но я не хочу, чтобы он находился в URL как GET.
UPDATE:
Хорошо, так что кажется, что этот шаг, чтобы подтвердить этап завершается в, если другое заявление было где я теряла все переменные 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 } ?>
Я попытался с помощью скрытых полей, но не похоже, чтобы пройти через должным образом оставляя пустых почтовых полей и когда я пытаюсь с помощью сеанса он дает ошибку - Не удается отправить ограничитель кеша сеанса - уже отправленные заголовки. –
Убедитесь, что 'session_start()' приходит, прежде чем вы выводите что-либо, попробуйте его в верхней части каждого файла, который вы используете. –
Если по какой-либо причине скрытые поля не являются опцией, $ _SESSION - это путь. Это должен быть принятый ответ. – dzumla011