Front end submit form with jquery form plugin

Maybe someone can help me with a small problem I’m having. I’m trying to use this: http://jquery.malsup.com/form/ to create a submit form for WordPress. I’ve tested it on a regular site(not WP) and it works. I can’t figure out why it won’t work in wp.

This is my form. I’ve created two page templates, one has the form, the other has the wp_insert_post code. If I change the form action to action=”http://mysite.com/page.php” it works, if I point it to a page template it doesn’t. I need it to point to a page template for the wp_insert_post code to work.

Read More

This is on one first page:

<form id="myForm" action="http://mysite.com/submitest" method="post"> 
Name: <input type="text" name="name" /> 
Comment: <textarea name="comment"></textarea> 
<input type="submit" value="Submit Comment" /> 

Thanks

Related posts

Leave a Reply

1 comment

  1. Leave the action value as blank. Give the submit button a name as name='form_sub'. Then add the following code to your functions.php file. Check the codex for init hook.
    You can create a ‘Thank You’ page, or a confirmation page where the user should go after successful submission.

    <?php
    add_action('init', 'form_submit');
    
    function form_submit(){
        if(isset($_POST['form_sub']))
        {
            //here you'll have your form data in a $_POST array, you can check it using a print_r. parse the form and insert the post
            $title = $_POST['name'];
            $content = $_POST['comment'];
    
            //change the category and author as you want
            $post_obj = array(
                            'post_title' => $title,
                            'post_content' => $content,
                            'post_category' => array(1), //Uncategorized
                            'post_status' => 'draft',
                            'post_author' => 1 //Admin
                           );
            $id = wp_insert_post($post_obj);
    
            //check if successfully submitted
            if(isset($id) && !is_wp_error($id))
            {
                //redirect to a thank you page, make sure the slug is 'thank-you'
                wp_redirect(home_url('/thank-you'));
                exit;
            } 
        }
    }
    ?>
    

    Try this. Let me know if you are stuck.

    Edit:
    This is how the form template should be. The submit button should have the name attribute, not the form.

    <?php /* Template Name: Submit */ ?> 
    <?php get_header(); ?> 
    Form this: 
    <form action="" method="post"> 
        Name: <input type="text" name="name" /> 
        Comment: <textarea name="comment"></textarea>
        <input type="submit" value="Submit" name="form_sub" />
    </form>
    <?php get_footer(); ?>