私は同じページの新しいクエリ文字列を構築するためにクエリ文字列から特定のURLパラメータを取得するプラグインを構築したいです。私は優れたProfessional WordPress Plugin Developmentの本に従っていますが、このアクションにどのフックを使うべきかわかりません。これが私の行動関数です。
add_action( 'init', 'tccl_redirect' );
function tccl_redirect() {
header ( "Location: http://www.mysite.com/$mypage?$newparam=$newvalue" );
?>
どのフックがヘッダーのリダイレクトに適していますか?
Kaiserが回答したように、template_redirect
フックは確かにリダイレクトに適しています。
また、ヘッダーを設定するのではなく、 wp_redirect()
functionを使用する必要があります。
私はtemplate_redirect
と言うでしょう。しかし、 Action Reference を見てください。
リダイレクト時にexit()
を忘れないでください。
/**
* This example redirects everything to the index.php page
* You can do the same for the dashboard with admin_url( '/' );
* Or simply base the redirect on conditionals like
* is_*() functions, current_user_can( 'capability' ), globals, get_current_screen()...
*
* @return void
*/
function wpse12535_redirect_sample() {
exit( wp_redirect( home_url( '/' ) ) );
}
add_action( 'template_redirect', 'wpse12535_redirect_sample' );
しかし、この例では kaiser からは実行できません。リダイレクト後にこのフック template_redirect が何度も動作するため、 無限の転送 が発生するためです。
次のように、すでにホームページにアクセスしているかどうかを確認することをお勧めします。
function wpse12535_redirect_sample() {
$current_url = 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$site_url = get_bloginfo('siteurl') . "/";
if($current_url != $site_url)
exit( wp_redirect( home_url( '/' ) ));
}
add_action( 'template_redirect', 'wpse12535_redirect_sample');
私のためにうまく働きます。助言がありますか?よろしく!