WP_Error с сообщением о проверке нескольких форм

Я работаю над подключаемым модулем front-end и не WP_Error получить сообщение об ошибке проверки подлинности с WP_Error . Я потратил несколько часов, чтобы найти проблему, но до сих пор не знаю.

Ниже код действительно работает, но я действительно не думаю, что я должен использовать return false; под сообщением об ошибке проверки содержимого.

 /* ** Process data from front end form http://codex.wordpress.org/Function_Reference/wp_insert_post */ function write_here_add_new_post() { if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "write_here_new_post") { $title = wp_strip_all_tags($_POST['title']); $content = $_POST['content']; $postdate = $_POST['date']; $gmtpostdate = $_POST['date']; $tags = $_POST['post_tags']; $cat = $_POST['cat']; // Server side validation if ($title == '') { write_here_errors()->add('title_not_vaild', __('Title not valid')); } if ($content == '') { write_here_errors()->add('content_not_vaild', __('Content not valid')); return false; } if (!$postdate) { $postdate = date('Ymd H:i:s'); $gmtpostdate = gmdate('Ymd H:i:s'); } // Add the content of the form to $post as an array $new_post = array( 'post_title' => $title, 'post_content' => $content, 'post_category' => array($cat), // Default empty. 'tags_input' => array($tags), // Default empty. 'post_status' => 'publish', // Choose: publish, preview, future, draft, etc. Default 'draft'. 'post_date' => $postdate, // The time post was made. 'post_date_gmt' => $gmtpostdate // The time post was made, in GMT. ); //save the new post and return its ID $post_id = wp_insert_post($new_post); // This will redirect you to the newly created post (Using GUID) $post = get_post($post_id); wp_redirect($post->guid); exit(); } } add_action('init', 'write_here_add_new_post'); // used for tracking error messages function write_here_errors(){ static $wp_error; // Will hold global variable safely return isset($wp_error) ? $wp_error : ($wp_error = new WP_Error(null, null, null)); } // displays error messages from form submissions function write_here_show_error_messages() { if($codes = write_here_errors()->get_error_codes()) { echo '<div class="form-error">'; // Loop error codes and display errors foreach($codes as $code){ $message = write_here_errors()->get_error_message($code); echo '<span class="error"><strong>' . __('Error') . '</strong>: ' . $message . '</span><br/>'; } echo '</div>'; } } 

Может ли кто-нибудь сказать мне, где я сделал что-то не так? чтобы получить сообщение об ошибке проверки работы с WP_Error ? Спасибо.

Обновление для людей, которые могут иметь одну и ту же проблему.

 //save the new post and return its ID $post_id = wp_insert_post($new_post); // This will redirect you to the newly created post (Using GUID) $post = get_post($post_id); wp_redirect($post->guid); exit(); 

Изменение выше кода до кода ниже будет решить проблему.

 $errors = write_here_errors()->get_error_messages(); // only create post if there are no errors if(empty($errors)) { //save the new post and return its ID $post_id = wp_insert_post($new_post); if($post_id) { // This will redirect you to the newly created post (Using GUID) $post = get_post($post_id); wp_redirect($post->guid); exit(); } }