Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I found this tutorial to create a front end post submission form:

It doesn't matter what I type on wp_redirect( 'http://www.google.com' ); I don't get redirected to anywhere. Just the same page but without the form (http://localhost/my-wordpress-site/submit/).

<?php 
/* 
Template Name: Rate Wine Form 
*/
?> 
<?php 
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_post") { 

    // Do some minor form validation to make sure there is content 
    if ($_POST['title'] != '') { 
        $title =  $_POST['title']; 
    } else { 
        echo 'Please enter the wine name'; 
        return false;
    } 
    if (isset ($_POST['description'])) { 
        $description = $_POST['description']; 
    } else { 
        echo 'Please enter some notes'; 
    } 

    $tags = $_POST['post_tags']; 
    $winerating = $_POST['winerating']; 

    // ADD THE FORM INPUT TO $new_post ARRAY 
    $new_post = array( 
    'post_title'    =>   $title, 
    'post_content'  =>   $description, 
    'post_category' =>   array($_POST['cat']),  // Usable for custom taxonomies too 
    'tags_input'    =>   array($tags), 
    'post_status'   =>   'publish',           // Choose: publish, preview, future, draft, etc. 
    'post_type' =>   'post',  //'post',page' or use a custom post type if you want to 
    'winerating'    =>   $winerating
    ); 

    //SAVE THE POST 
    $pid = wp_insert_post($new_post); 

             //KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL 
    wp_set_post_tags($pid, $_POST['post_tags']); 

    wp_redirect( 'http://www.google.com' ); 

    //ADD OUR CUSTOM FIELDS 
    add_post_meta($pid, 'rating', $winerating, true);  

    //INSERT OUR MEDIA ATTACHMENTS 
    if ($_FILES) { 
        foreach ($_FILES as $file => $array) { 
        $newupload = insert_attachment($file,$pid); 
        // $newupload returns the attachment id of the file that 
        // was just uploaded. Do whatever you want with that now. 
        } 

    } // END THE IF STATEMENT FOR FILES 

} // END THE IF STATEMENT THAT STARTED THE WHOLE FORM 

//POST THE POST YO 
do_action('wp_insert_post', 'wp_insert_post'); 

?> 


        <div id="container"> 
            <div id="content" role="main"> 

        <!-- WINE RATING FORM --> 

        <div class="wpcf7"> 
        <form id="new_post" name="new_post" method="post" action="" class="wpcf7-form" enctype="multipart/form-data"> 
            <!-- post name --> 
            <fieldset name="name"> 
                <label for="title">Wine Name:</label> 
                <input type="text" id="title" value="" tabindex="5" name="title" /> 
            </fieldset> 

            <!-- post Category --> 
            <fieldset class="category"> 
                <label for="cat">Type:</label> 
                <?php wp_dropdown_categories( 'tab_index=10&taxonomy=category&hide_empty=0' ); ?> 
            </fieldset> 

            <!-- post Content --> 
            <fieldset class="content"> 
                <label for="description">Description and Notes:</label> 
                <textarea id="description" tabindex="15" name="description" cols="80" rows="10"></textarea> 
            </fieldset> 

            <!-- wine Rating --> 
            <fieldset class="winerating"> 
                <label for="winerating">Your Rating</label> 
                <input type="text" value="" id="winerating" tabindex="20" name="winerating" /> 
            </fieldset> 

            <!-- images --> 
            <fieldset class="images"> 
                <label for="bottle_front">Front of the Bottle</label> 
                <input type="file" name="bottle_front" id="bottle_front" tabindex="25" /> 
            </fieldset> 

            <fieldset class="images"> 
                <label for="bottle_rear">Back of the Bottle</label> 
                <input type="file" name="bottle_rear" id="bottle_rear" tabindex="30" /> 
            </fieldset> 

            <!-- post tags --> 
            <fieldset class="tags"> 
                <label for="post_tags">Additional Keywords (comma separated):</label> 
                <input type="text" value="" tabindex="35" name="post_tags" id="post_tags" /> 
            </fieldset> 

            <fieldset class="submit"> 
                <input type="submit" value="Post Review" tabindex="40" id="submit" name="submit" /> 
            </fieldset> 

            <input type="hidden" name="action" value="new_post" /> 
            <?php wp_nonce_field( 'new-post' ); ?> 
        </form> 
        </div> <!-- END WPCF7 --> 

            </div><!-- #content --> 
        </div><!-- #container --> 

Any suggestions to fix this?

share|improve this question

3 Answers 3

Your code is not in the right order and you need to exit the script after using wp_redirect try this:

<?php 
/* 
Template Name: Rate Wine Form 
*/
?> 
<?php 
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_post") { 

    // Do some minor form validation to make sure there is content 
    if ($_POST['title'] != '') { 
        $title =  $_POST['title']; 
    } else { 
        echo 'Please enter the wine name'; 
        return false;
    } 
    if (isset ($_POST['description'])) { 
        $description = $_POST['description']; 
    } else { 
        echo 'Please enter some notes'; 
    } 

    $tags = $_POST['post_tags']; 
    $winerating = $_POST['winerating']; 

    // ADD THE FORM INPUT TO $new_post ARRAY 
    $new_post = array( 
    'post_title'    =>   $title, 
    'post_content'  =>   $description, 
    'post_category' =>   array($_POST['cat']),  // Usable for custom taxonomies too 
    'tags_input'    =>   array($tags), 
    'post_status'   =>   'publish',           // Choose: publish, preview, future, draft, etc. 
    'post_type' =>   'post',  //'post',page' or use a custom post type if you want to 
    'winerating'    =>   $winerating
    ); 

    //SAVE THE POST 
    $pid = wp_insert_post($new_post); 

             //KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL 
    wp_set_post_tags($pid, $_POST['post_tags']); 



    //ADD OUR CUSTOM FIELDS 
    add_post_meta($pid, 'rating', $winerating, true);  

    //INSERT OUR MEDIA ATTACHMENTS 
    if ($_FILES) { 
        foreach ($_FILES as $file => $array) { 
        $newupload = insert_attachment($file,$pid); 
        // $newupload returns the attachment id of the file that 
        // was just uploaded. Do whatever you want with that now. 
        } 

    } // END THE IF STATEMENT FOR FILES 


    //redirect to newly created post
    wp_redirect( get_permalink($pid) ); 
    exit();
} // END THE IF STATEMENT THAT STARTED THE WHOLE FORM 

?> 


        <div id="container"> 
            <div id="content" role="main"> 

        <!-- WINE RATING FORM --> 

        <div class="wpcf7"> 
        <form id="new_post" name="new_post" method="post" action="" class="wpcf7-form" enctype="multipart/form-data"> 
            <!-- post name --> 
            <fieldset name="name"> 
                <label for="title">Wine Name:</label> 
                <input type="text" id="title" value="" tabindex="5" name="title" /> 
            </fieldset> 

            <!-- post Category --> 
            <fieldset class="category"> 
                <label for="cat">Type:</label> 
                <?php wp_dropdown_categories( 'tab_index=10&taxonomy=category&hide_empty=0' ); ?> 
            </fieldset> 

            <!-- post Content --> 
            <fieldset class="content"> 
                <label for="description">Description and Notes:</label> 
                <textarea id="description" tabindex="15" name="description" cols="80" rows="10"></textarea> 
            </fieldset> 

            <!-- wine Rating --> 
            <fieldset class="winerating"> 
                <label for="winerating">Your Rating</label> 
                <input type="text" value="" id="winerating" tabindex="20" name="winerating" /> 
            </fieldset> 

            <!-- images --> 
            <fieldset class="images"> 
                <label for="bottle_front">Front of the Bottle</label> 
                <input type="file" name="bottle_front" id="bottle_front" tabindex="25" /> 
            </fieldset> 

            <fieldset class="images"> 
                <label for="bottle_rear">Back of the Bottle</label> 
                <input type="file" name="bottle_rear" id="bottle_rear" tabindex="30" /> 
            </fieldset> 

            <!-- post tags --> 
            <fieldset class="tags"> 
                <label for="post_tags">Additional Keywords (comma separated):</label> 
                <input type="text" value="" tabindex="35" name="post_tags" id="post_tags" /> 
            </fieldset> 

            <fieldset class="submit"> 
                <input type="submit" value="Post Review" tabindex="40" id="submit" name="submit" /> 
            </fieldset> 

            <input type="hidden" name="action" value="new_post" /> 
            <?php wp_nonce_field( 'new-post' ); ?> 
        </form> 
        </div> <!-- END WPCF7 --> 

            </div><!-- #content --> 
        </div><!-- #container --> 
share|improve this answer
    
Strange, still having the same problem. –  janoChen Jan 29 '12 at 10:43

This looks very much like this post: Not redirecting upon front-end post submission

wp_redirect needs exit; after it.

wp_redirect( 'http://www.google.com' );
exit;
share|improve this answer

put

<?php ob_start(); ?>

at the beginning of the file...

example
<?php ob_start(); ?>
<?php wp_header(); ?>

and put

<?php ob_flush(); ?>

at the end of the file...

example
<?php wp_footer(); ?>
<?php ob_flush(); ?>
share|improve this answer
    
Why? Output buffering is slow. –  toscho Nov 2 '12 at 21:13

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.