2017-10-10 68 views
1

私は、私のWordPressのウェブサイト上のリンクを持つ誰もがアクセスできるフォームを持っています。 ユーザーが新しい投稿を送信すると、作成したばかりの投稿にリダイレクトされます。ここで新たに投稿された投稿にリダイレクト

は形式です:

<?php 
wp_register_script('validation', 'http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js', array('jquery')); 
wp_enqueue_script('validation'); 


$post_information = array(
    'post_title' => wp_strip_all_tags($_POST['postTitle']), 
    'post_content' => $_POST['postContent'], 
    'post_type' => 'post', 
    'post_status' => 'publish' 
); 

wp_insert_post($post_information); 
$post_id = wp_insert_post($post_information); 
?> 


<form action="" id="primaryPostForm" method="POST" onsubmit="return getContent()"> 

<fieldset> 
    <label for="postTitle"><?php _e('Post Title:', 'framework') ?></label> 

    <input type="text" name="postTitle" id="postTitle" class="required" /> 
</fieldset> 

<fieldset> 
    <label for="postContent"><?php _e('Post Content:', 'framework') ?></label> 
    <textarea name="postContent" id="postContent" rows="8" cols="30" class="required"></textarea> 
</fieldset> 

<fieldset> 
    <input type="hidden" name="submitted" id="submitted" value="true" /> 

    <button type="submit"><?php _e('Add Post', 'framework') ?></button> 
    <?php wp_nonce_field('new-post'); ?> 
</fieldset> 

</form> 

私はPHPコードの最後に、この

wp_redirect(get_permalink($post_id)); 
die(); 

を追加することによって、それは自分が作成したポストにユーザーをリダイレクトするだろうと思いました...私は別のものを試しましたが、動作しません。どこにもリダイレクトされません。 アイデアはありますか?どうやってやるの?ありがとう!

答えて

1

よく挿入しています。それは問題かもしれません。これを試してみてください。

$post_id = wp_insert_post($post_information); 
$url = get_permalink($post_id); 
wp_redirect($url); 
exit(); 
+1

あなたの答えはありがとうRalph。私はちょうど試みたが、ウェブサイト全体が空白になり、もう何も表示されない(htmlなど)。それは "exit();"に関連しているようですが、削除するとすぐに、再び動作します(リダイレクトはできません)。なぜそれがそれをやっているのか分かりますか?ありがとう! – heroickoala

+0

Die()で置き換えることはできますが、何を使用するかは関係ありません。 dieはexitのエイリアスです:/ –

+0

これがうまくいかない場合、これを達成しようとする場所によっては失敗する可能性があるため、より良いコンテキストが必要になります。あなたはテンプレートからこれを試していますか?プラグイン?、関数ファイル?あなたのコードが実行される原因を突き止めます。投稿要素の存在? –

関連する問題