wp_redirect()関数が機能していません
7 回答
- 投票
-
- 2012-03-21
ここで2つの問題があります:
-
$post->guid
をURLとして使用しないでください -
wp_redirect()
(コーデックスを参照)wp_redirect()
は自動的に終了しないため、ほとんどの場合、終了する必要があります.
//..... code as in question $post_id = wp_insert_post($new_post); $url = get_permalink( $post_id ); wp_redirect($url); exit();
Two things wrong here:
- Don't use
$post->guid
as an url - You must
exit()
after usingwp_redirect()
(see the Codex)wp_redirect()
does not exit automatically and should almost always be followed by exit.
//..... code as in question $post_id = wp_insert_post($new_post); $url = get_permalink( $post_id ); wp_redirect($url); exit();
-
30秒であなたを倒す:DBeat you by 30 seconds :D
- 0
- 2012-03-21
- soulseekah
-
ページコンソールを実行すると、これは機能しませんshow 302 Found 479ms jquery ... r=1.7.1(4行目) GET http://localhost/wordpress/newpages-17/ 200 OK 1.2秒の読み込み..........this is not working, if i run the page console show 302 Found 479ms jquery...r=1.7.1 (line 4) GET http://localhost/wordpress/newpages-17/ 200 OK 1.2s loading..........
- 0
- 2012-03-21
- SANS780730
-
それはJSエラーです.`wp_redirect`とは何の関係もありません.上記の答えはそれを行う正しい方法なので、何か他のことをしているに違いありません.Thats a JS error. Nothing to do with `wp_redirect`. The above answer is the correct way to do it, so you must be doing something else wrong.
- 2
- 2012-03-21
- Stephen Harris
-
申し訳ありませんが、GET localhost/wordpress/newpages-17のみを表示します.200OK1.2sの読み込み..........sorry.it show only GET localhost/wordpress/newpages-17 200 OK 1.2s loading..........
- 0
- 2012-03-21
- SANS780730
-
@StephenHarris http://wordpress.stackexchange.com/q/76991/10413で私のリダイレクトの質問を調べていただけませんか.$pidを使用してこの回答からコードを試しましたが、それでも機能しません.ありがとう@StephenHarris would you mind looking over my redirect question at http://wordpress.stackexchange.com/q/76991/10413 I've also tried your code from this answer using $pid but still can't get it to work. Thanks
- 0
- 2012-12-22
- Anagio
-
この質問には非常に多くの意見が寄せられているため、問題が解決した場合は、この回答を受け入れることを検討してください.そうすれば、質問が回答済みとして表示され、サイトを整理するのに役立ちます.ありがとう.This question gets a huge number of views, so please consider accepting this answer if it solved your problem. That way the question shows up as answered and helps us keep the site tidy. Thanks.
- 0
- 2016-07-23
- Andy Macaulay-Brook
-
- 2015-12-10
簡単な解決策があります.以下をお読みください:
-
テーマファイルで
wp_redirect($url)
を使用していて、それが機能しない場合は、関数ファイルにob_clean() ob_start()
を追加します.トップ. -
プラグインで使用する場合は、上部のメインプラグインファイルに
ob_clean() ob_start()
を追加します.
そして、wp_redirect($ url)の後に
exit() function after wp_redirect($url)
このように:$url = 'http://example.com'; wp_redirect($url); exit();
I have a simple solution, please read:
If you are using
wp_redirect($url)
in theme files, and it is not working addob_clean() ob_start()
in your function file on top.If using in plugin add
ob_clean() ob_start()
in the main plugin file on top.
And make sure you have added
exit() function after wp_redirect($url)
Like this:$url = 'http://example.com'; wp_redirect($url); exit();
-
これにより、MozillaFirefoxがリダイレクトを実行するために302ではなく200を返すという問題が解決されます.Chromeはリダイレクトしますが、Firefoxはリダイレクトしません.この修正は役に立ちます.ありがとうございました!This solves the issue with Mozilla Firefox returning 200 instead of 302 for the redirection to take place. Chrome redirects while Firefox doesn't. This fix helps. Thank you!
- 0
- 2018-09-12
- El'Magnifico
-
プラグインを作成したり、テンプレートを設計したりする場合、これはより詳細な回答です.私のために働いた.This is a more detailed answer if you are creating a plugin or designing template. worked for me.
- 0
- 2019-07-10
- Sayed Mohd Ali
-
私は自分のカスタムテーマでこの作品を作るのに苦労してきました...魅力のように機能します...I've been struggling to make this work in my custom theme... Works like a charm...
- 0
- 2019-10-08
- ShivangiBilora
-
- 2013-05-01
これが役立つかどうかはわかりません...しかし、テンプレートにコードが含まれていることがわかりました そして私はこのように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(); ?>
無効にされたプラグインはありません.そして、すべてが大丈夫でした...これがあなたのために働くならば、あなたは試してみるかもしれません
I am not sure if this will help... but I found that I had some code in a template and I was starting with get_header() in this way:
<?php /** * .. Template comments */ get_header(); if(...) { ... if(...) { ... wp_redirect($url); exit(); } } ?>
and was getting the same issue of header previously sent... What I did was just move get_header() to the end of the block and voila!!!
<?php /** * .. Template comments */ if(...) { ... if(...) { ... wp_redirect($url); exit(); } } get_header(); ?>
No plugin was disabled. and everything was ok... you may give a try if this works for you
-
テーマソースにアクセスできる場合、これはそれを行うための良い方法です.リダイレクトは、 `get_header`を呼び出す前に実行する必要があります.This is a good way to do it, if you have access to the theme source. Redirects should run before the call to `get_header`.
- 0
- 2013-05-01
- s_ha_dum
-
get_header()を削除することも私のために働きました!removing get_header() also worked for me!
- 0
- 2014-10-31
- Magico
-
これが、 `wp_redirect`が機能しないことに苦労しているほとんどの人にとって最も一般的な原因だと思いますI'd bet this is the most common cause for most people struggling with `wp_redirect` not working
- 0
- 2019-02-25
- joehanna
-
- 2012-03-21
投稿の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に戻って確認します.Never ever use the post GUID value, it does not have to match the real URL of the post.
http://codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note
wp_redirect( get_permalink( $post_id ) ); exit(); // always exit
Also, make sure
wp_redirect
is not plugged by something else which prevents it from doing its job correctly. Deactivate all plugins and revert to Twenty Ten/Eleven to check.-
`wp_redirect`がプラグ可能であるという+1の良い呼び出し+1 good call on `wp_redirect` being pluggable
- 0
- 2012-03-21
- Stephen Harris
-
ありがとう….thaning you....
- 0
- 2012-03-21
- SANS780730
-
- 2019-01-16
次のものがないことを確認してください:
get_header();
またはテンプレートにヘッダーやフッターなどのコンテンツを作成する可能性のあるワードプレス関数.そうしないと、リダイレクトは機能しません.一部の開発者は
ob_start();
を使用してページをクリアしようとしますが、ob_start();
を使用してもページにコンテンツがある場合、リダイレクトは行われません.動作します.次に、次のコードを試してください:
wp_redirect(get_permalink($post->ID)); exit;
Make sure you don't have:
get_header();
or any wordpress function that potentially creates contents like header and footer in your template. Otherwise the redirection won't work.Some developers try to clear the page by using
ob_start();
but if you have content in your page even if you useob_start();
the redirection won't work.and then simply try this code:
wp_redirect(get_permalink($post->ID)); exit;
-
- 2019-08-06
if( is_page( ['wfp-dashboard', 'wfp-checkout'] ) ){ if(!is_user_logged_in()){ @ob_flush(); @ob_end_flush(); @ob_end_clean(); wp_redirect( wp_login_url() ); exit(); } }
if( is_page( ['wfp-dashboard', 'wfp-checkout'] ) ){ if(!is_user_logged_in()){ @ob_flush(); @ob_end_flush(); @ob_end_clean(); wp_redirect( wp_login_url() ); exit(); } }
-
これが問題をどのように修正するかについての説明を含めることができますか?コードに出力バッファーがある理由がわかりません.出力バッファーには `@`演算子があり、 `@`はエラーの発生を防止せず、エラーログから非表示にするだけです.Can you include some explanation of how this fixes the issue? I'm not sure why there are output buffers in the code, and they have the `@` operator, `@` doesn't prevent errors from happening, it just hides them from the error log
- 0
- 2020-07-22
- Tom J Nowell
-
- 2020-07-22
すでに送信されているヘッダーが主な理由です.ヘッダーはすでに送信されているため、再送信できず、リダイレクトに失敗します.initフックのようにbeforeヘッダーを使用します.
add_action('init', 'your_app_function');
header already sent is main reason. As header already sent, so its unable to resend it and fails to redirect. Use before header like in init hook.
add_action('init', 'your_app_function');
wp_redirect($post->guid)
が機能していません.どうすればこれを修正できますか?これは私のコードです: