Intereting Posts
как читать поля базы данных Изменение категории должности из выпадающего меню Получите подсчет количества раз, когда термин или категория используется в сообщениях Ошибка пользовательской таксономии подкачки с базой CPT в таксономии URL-адрес перезаписи multisite: глобальное меню, содержащее ссылки на сетевые сайты? Комплексная таксономическая схема Получить список всех страниц Grandchild Повторное отображение изображений в облачное хранилище Как изменить размеры изображения заголовка на двадцать семнадцать тем (на страницах, кроме домашней страницы) Как проверить, является ли термин родителем другому? Использование одного и того же короткого кода для отображения любой таблицы из базы данных Показать все сообщения thumbnails при просмотре одного сообщения Отдельный jQuery для индивидуальных комментариев? запрашивать множественную таксономию и показывать количество сообщений Как сделать meta_query для вложений?

Сообщение о проблеме обновления повторяется, когда страница отправляется после перезагрузки страницы.

У меня есть форма на моем веб-сайте, которая создает сообщение с переднего конца. Поэтому каждый раз, когда я обновляю страницу, я получил это сообщение первым:

Страница, на которую вы ищете информацию, которую вы ввели. Возврат на эту страницу может привести к повторению любого действия, которое вы приняли. Вы хотите продолжить?

Если страница обновлена, то выполняется предыдущее действие, в котором создается сообщение с теми же записями, что и в предыдущем сообщении. КОД: ::

<form action="" method="post" name="story_form" onsubmit="return vedioform()" enctype="multipart/form-data"> <label>Add link to your video</label><br /> <input type="text" class="input-big" name="cntnt"/> <label>Name</label><br /> <input type="text" class="input-box" name="fname" /> <label>Email</label><br /> <input type="text" class="input-box" name="email" /> <label>Your Wix website</label><br /> <input type="text" class="input-box" name="title"/> Excerpt::<input type="text" class="input-box" name="excerpt"/> custom:::<input type="text" class="input-box" name="custom"/> <label>Your picture (Type: jpeg, jpg, png, gif)</label><br /> <input type="file" size="60" id="BrowserHidden" onchange="getElementById('FileField').value = getElementById('BrowserHidden').value;" name="thumbnail"/> <input type="text" id="FileField" name="filefield" /> <input type="submit" class="form-submit" id="submit" value="SUBMIT" name="submit-video"/><br /> </form> <?php $title = $_POST['title']; //from your form... $content=$_POST['cntnt']; $excerpt=$_POST['excerpt']; $custom = $_POST['custom']; //-- Set up post values $myPost = array( 'ID' => '', 'post_title' => $excerpt, 'post_excerpt' => $excerpt, 'post_status' => 'publish', 'post_type' => 'post', 'post_author' => $authorID, 'post_content' =>$content, 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_category' => array('7'), ); $new_post = wp_insert_post( $myPost); add_post_meta($new_post, 'rating', $custom, true); ?> 

Это более или менее то, как post работает. Что вам нужно сделать, так это то, что WordPress делает на бэкэнд.

  1. Отправить форму
  2. Обработать его
  3. Перенаправить обратно на исходную страницу.

Таким образом, обновление не передает данные post . Есть имя для этого процесса, но я не могу вспомнить, что это сейчас.

get не выдает этого предупреждения, кстати, но будет «двойной вставкой».

Большая часть вашей проблемы заключается в том, что, как записывается ваш код, каждый раз, когда загружается страница, вы $myPost переменную $myPost и запускаете wp_insert_post( $myPost); Вы даже не проверяете, есть ли у вас данные $_POST прежде чем делать это. Вы пытаетесь вставить сообщение о том, была ли форма отправлена ​​или нет. К счастью, wp_insert_post умрет, если ему не хватает пары ключевых параметров. По крайней мере, вы должны …

 if (!empty($_POST)) { $title = $_POST['title']; //from your form... $content=$_POST['cntnt']; $excerpt=$_POST['excerpt']; $custom = $_POST['custom']; //-- Set up post values $myPost = array( 'ID' => '', 'post_title' => $excerpt, 'post_excerpt' => $excerpt, 'post_status' => 'publish', 'post_type' => 'post', 'post_author' => $authorID, 'post_content' =>$content, 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_category' => array('7'), ); $new_post = wp_insert_post( $myPost); add_post_meta($new_post, 'rating', $custom, true); } 

По крайней мере, это не будет выполняться каждый раз, когда страница загружается. Тем не менее, вы должны действительно проверить элементы, прежде чем использовать их …

 $title = (isset($_POST['title'])) ? $_POST['title'] : ''; 

И я тоже попытаюсь его дезинфицировать . Затем вы должны обработать форму на ранней странице, а не внизу, и перенаправить обратно, используя wp_safe_redirect , если представление формы является успешным. Поскольку это передний конец, это означает, что вам нужно обработать форму до функции get_header чтобы перенаправление произошло до get_header любого содержимого в браузер.

На самом деле, и никакого преступления не было, но ваша проблема больше, чем вы думаете. У вас очень плохо разработан код там несколькими способами.