Problems with wp_insert_post in POST form
-
Hey fellas,
I’m working on a WordPress Web site for a student newspaper, and I’m running into a few snags trying to build a “Letter to the Editor” form. I’ve made a custom template, letters.php, with a PHP form embedded in it, and a “Letters” page that uses the template. Here’s the form I’ve got:
<?php $my_fancy_new_post = array(); $my_fancy_new_post['post_title'] = $_POST['post_title']; $my_fancy_new_post['post_content'] = $_POST['post_content']; $my_fancy_new_post['comment_status'] = 'closed'; $my_fancy_new_post['post_author'] = 2; $my_fancy_new_post['post_category'] = array(30); $my_fancy_new_post['post_status'] = 'draft'; $writer_name = $_POST['letter_name']; $writer_school = $_POST['school']; $writer_year = $_POST['letter_year']; $writer_email = $_POST['email']; $writer_phone = $_POST['telephone']; if (!isset($_POST['submit'])) { ?> <form method="post" action=""> <table> <tr><th><label for="id_name">Your Name(s):</label></th><td><input id="id_name" type="text" name="letter_name" maxlength="100" /></td></tr> <tr><th><label for="id_school">School:</label></th><td><input id="id_school" type="text" name="school" maxlength="100" /></td></tr> <tr><th><label for="id_year">Year:</label></th><td><input id="id_year" type="text" name="letter_year" maxlength="50" /></td></tr> <tr><th><label for="id_email">E-Mail:</label></th><td><input type="text" name="email" id="id_email" /></td></tr> <tr><th><label for="id_telephone">Telephone:</label></th><td><input id="id_telephone" type="text" name="telephone" maxlength="16" /></td></tr> <tr><th><label for="id_title">Letter Title:</label></th><td><input id="id_title" type="text" name="post_title" maxlength="100" /></td></tr> <tr><th><label for="id_text">Your Comments:</label></th><td><textarea id="id_text" rows="10" cols="40" name="post_content"></textarea></td></tr> <tr> <td> </td> <td><input type="submit" value="Submit" name="submit"/></td> </tr> </table> </form> <?php } else { echo '<p>'; $new_post_ID = wp_insert_post( $my_fancy_new_post ); if( $new_post_ID ) { add_post_meta($new_post_ID, 'writer', $writer_name); add_post_meta($new_post_ID, 'letter_school', $writer_school); add_post_meta($new_post_ID, 'letter_year', $writer_year); add_post_meta($new_post_ID, 'letter_email', $writer_email); add_post_meta($new_post_ID, 'letter_phone', $writer_phone); echo 'Your letter was submitted successfully. Thank you for contacting <em>The Cavalier Daily!</em>'; } else { ?> An error occured while submitting your letter. Please go back and try again.</p> <p>Potentially useful debug information:<br /> <strong>$_POST['post_title']</strong> <?php echo $_POST['post_title']; ?><br /> <strong>$_POST['post_content']</strong> <?php echo $_POST['post_content']; ?><br /> <?php } echo '</p>'; } ?>
When I try the form, I get the error condition. The debug information – the title and content – both seem to be working fine, and they’re the only information the plugin collects that goes into wp_insert_post. As far as I can tell, all the information I’m supplying manually checks out, so why isn’t it working?
I tried using TDO Mini Forms, but I was essentially getting the same error – wp_insert_post was returning 0 with it as well. Are there any known plugins or server settings that interfere with that function?
Thanks in advance for your help.
- The topic ‘Problems with wp_insert_post in POST form’ is closed to new replies.