Intereting Posts
Показывать опубликованное время только для сегодняшних сообщений Первый платеж с подпиской на обновление woocommerce Обновление синхронизации Скрыть пользовательскую таксономию от простого администратора Как использовать заголовок видео .webm? проблема options.php – данные не сохранены Если сообщение имеет две категории с разными разрешениями, что произойдет? Развертывание обновленных или новых плагинов, которые изменяют таблицу wp_options unregister_sidebar в дочерней теме не работает Пользовательские URL-адреса типа и таксономии is_page_template работает не так, как ожидалось Как разбить не-буквенно-цифровые символы, конвертировать пробелы в тире, в верхнем регистре до нижнего регистра в этом контексте Комбинированные сообщения и постмета Графика для предварительного просмотра сайта для WordPress Решение для электронной коммерции Post-ID в URL-адресе отличается от $ post-> ID

Предупреждение о представлении формы: невозможно изменить ошибку заголовка только тогда, когда плагин отключен

Я создал некоторые пользовательские формы сообщений, которые я теперь использую вместо плагина под названием WP User Frontend, который позволяет вам публиковать и редактировать с первого конца. Эти почтовые формы мы отлично работаем, но когда я отключил плагин, теперь я получаю предупреждение, когда сообщение завершает его «загрузку».

Предупреждение. Невозможно изменить информацию заголовка – уже отправленные заголовки (вывод запущен в /home/####/public_html/#####/wp-content/themes/####/header-default.php:2) в /home/#####/public_html/#####/wp-includes/pluggable.php в строке 881.

Теперь я проверил пробелы и, честно говоря, не вижу ни одного в заголовке, шаблоне страницы или нижнем колонтитуле, и я не думаю, что с ним что-то связано, потому что почтовые формы отлично работают, когда плагин активирован. Я также использую buddypress, который имеет форму для аватаров, и это работает отлично, без активации плагина, поэтому я думаю, что у моей формы есть что-то, отсутствующее в плагине. Вместо вставки всего кода, включая html-форму, я собираюсь показать php-часть шаблона, который выполняет эту работу.

<?php// Template Name: Album Post Form ?> <?php get_header(); ?> <?php if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") { if ( ! function_exists( 'wp_handle_upload' )) { require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); } $file=$_FILES; // Do some minor form validation to make sure there is content if (isset ($_POST['title'])) { $title = $_POST['title']; } else { echo 'Please enter a game title'; } if (isset ($_POST['description'])) { $description = $_POST['description']; } else { echo 'Please enter the content'; } $tags = $_POST['post_tags']; // Add the content of the form to $post as an array $new_post = array( 'post_title' => $title, 'post_content' => $description, 'tags_input' => array($tags), 'post_status' => 'publish', // Choose: publish, preview, future, draft, etc. 'post_type' => fod_albums // Use a custom post type if you want to ); //save the new post and return its ID $pid = wp_insert_post($new_post); if (!($file['album_image']['name'] == "")) { $cover_art_id = media_handle_sideload( $file['album_image'], $pid ); if ( is_wp_error($cover_art_id) ) { @unlink($file_array['tmp_name']); return $cover_art_id; } if(!is_wp_error($cover_art_id)){ wp_set_object_terms( $cover_art_id, 'cover_art', 'category'); } update_post_meta($pid,'album_cover',$cover_art_id); } elseif ($file['album_image']['name'] == "" && !($_POST['cover_radio'] == '')) { update_post_meta($pid,'music_art',$_POST['cover_radio']); } wp_redirect( get_permalink($pid)); exit(); } do_action('wp_insert_post', 'wp_insert_post'); ?> 

Есть идеи?

Вы не можете этого сделать:

 wp_redirect( get_permalink($pid)); 

после того, как вы уже отправили контент в браузер. Заголовки уже отправлены, и wp_redirect пытается отправить заголовок еще раз. Первые три строки шаблона, который вы вставили выше, отправляют контент в браузер, когда вы закрываете и открываете php. очевидно, что ваш файл header.php делает то же самое.

Перед загрузкой шаблона необходимо обработать форму для обработки формы.

 function wpa63889_process_form( $query ) { if ( $query->is_page( 'my-form-page' ) && isset( $_POST['title'] ) ) { // process form data } } add_action( 'pre_get_posts', 'wpa63889_process_form' );