重定向在此前端帖子提交表单中不起作用?

时间:2012-01-27 作者:janoChen

我发现this 创建前端post提交表单的教程:

我打什么都没关系wp_redirect( \'http://www.google.com\' ); 我没有被重定向到任何地方。只是同一页,但没有表单(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 --> 
有什么建议可以解决这个问题吗?

3 个回复
SO网友:Bainternet

您的代码顺序不正确,您需要exit 使用后的脚本wp_redirect 尝试以下操作:

<?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 --> 

SO网友:Rob Vermeer

这与以下帖子非常相似:Not redirecting upon front-end post submission

wp\\U重定向需要退出;在它之后。

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

SO网友:wiseone

<?php ob_start(); ?>
在文件的开头。。。

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

<?php ob_flush(); ?>
在文件末尾。。。

example
<?php wp_footer(); ?>
<?php ob_flush(); ?>

结束

相关推荐

数据库中的wp_5_posts表是什么?

我想知道wp_2_*, wp_3_*, wp_4_*, 和wp_5_* 表位于数据库中。有人知道他们是什么吗?在我的示例中,其中一些来自插件,但是wp_# 前缀表示什么?为什么有些核心数据库表会有重复的数据?mysql> show tables; +-----------------------------+ | Tables_in_example | +-----------------------------+ | wp_2_commentme