wp_redirect($post->guid)
が機能していません。どうすればこれを修正できますか?
これは私のコードです:
if(isset($_REQUEST['vid']) ){
$id=$_REQUEST['vid'];
$post_title = 'sasa';
$post_content ='zxczxczxc';
$new_post = array(
'ID' => '',
'post_author' => $user->ID,
'post_content' => $post_content,
'post_title' => $post_title,
'post_status' => 'publish',
// NOW IT'S ALREADY AN ARRAY
);
$post_id = wp_insert_post($new_post);
// This will redirect you to the newly created post
$post = get_post($post_id);
$url=$post->guid;
wp_redirect($post->guid);
}
ここで間違っていることが2つあります。
$post->guid
をURLとして使用しないでくださいexit()
を使用した後は、 must wp_redirect()
を使用する必要があります( コーデックスを参照 )
wp_redirect()
は自動的には終了せず、ほとんどの場合はexitの後に続きます。
//..... code as in question
$post_id = wp_insert_post($new_post);
$url = get_permalink( $post_id );
wp_redirect($url);
exit();
これでうまくいくかどうかはわかりませんが、テンプレートにコードがいくつかあり、get_header()から始めていることがわかりました。
<?php
/**
* .. Template comments
*/
get_header();
if(...) {
...
if(...) {
...
wp_redirect($url);
exit();
}
}
?>
そして、以前に送信されたのと同じ問題を抱えていました...私がしたのは、単にget_header()をブロックの最後に移動するだけでした。
<?php
/**
* .. Template comments
*/
if(...) {
...
if(...) {
...
wp_redirect($url);
exit();
}
}
get_header();
?>
無効にされたプラグインはありません。そして、すべてが問題なかった...これがあなたのために働くならば、あなたは試みをするかもしれません
Post GUIDの値を決して使用しないでください。投稿の実際のURLと一致する必要はありません。
http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note
wp_redirect( get_permalink( $post_id ) );
exit(); // always exit
また、wp_redirect
が他のものによってプラグされていないと、正しく機能しません。すべてのプラグインを無効にして、Twenty Ten/Elevenに戻って確認してください。
私は簡単な解決策を持っています、読んでください:
テーマファイルでwp_redirect($url)
を使用していて、それが機能していない場合は、関数ファイルにob_clean() ob_start()
を追加してください。
プラグインで使用する場合は、一番上のメインプラグインファイルにob_clean() ob_start()
を追加してください。
そして、exit() function after wp_redirect($url)
を次のように追加したことを確認してください。
$url = 'http://example.com';
wp_redirect($url);
exit();
get_header();
や、テンプレート内にヘッダーやフッターなどのコンテンツを作成する可能性のあるワードプレス関数がないことを確認してください。そうでなければ、リダイレクトは機能しません。
ob_start();
を使用してページをクリアしようとする開発者もいますが、ob_start();
を使用してもページにコンテンツがある場合、リダイレクトは機能しません。
そして、このコードを試してみてください。
wp_redirect(get_permalink($post->ID));
exit;