WordPress:コメント投稿後に任意のページにリダイレクトさせる方法

WordPress:コメント投稿後に任意のページにリダイレクトさせる方法

WordPressでコメントが投稿された際、デフォルトではコメント投稿後もそのまま同じページが表示されていますが、これを任意のページにリダイレクトさせる方法です。
わかりやすい用途としては例えばコメントを投稿してくれたお礼などの内容は書かれたサンキューページをあらかじめ用意しておいて、コメント投稿後はそこへリダイレクトさせるなどの利用方法があります。

TOPページにリダイレクト

コメント投稿後にTOPページにリダイレクトしたいときには、functions.phpに下記のように記述します。
注意点としてはwp_safe_redirect() は自動的にexit(処理の中止)をしないので、リダイレクト処理直後にexit();を記述する必要があります。

functions.php

function redirect_after_comment() {
  wp_safe_redirect( home_url( '/' ) );
  exit();
}
add_filter( 'comment_post_redirect', 'redirect_after_comment' );

その他ページにリダイレクト

あらかじめ固定ページを利用するなどしてサンキューページを用意しておき、コメント投稿後にそのページが表示されるという動きにしたいときなどに使える方法です。
実装にはfunctions.phpに下記のように記述し、コードでハイライト部分に任意のページを指定すればコメント投稿後にそのページへとリダイレクトされます。

※下記をWordPressインストール直後にそのまま使用した場合は、コメント投稿後に最初から用意されているサンプル固定ページにリダイレクトされます。

functions.php

function redirect_after_comment() {
  wp_safe_redirect( home_url( '/sample-page/' ) );
  exit();
}
add_filter( 'comment_post_redirect', 'redirect_after_comment' );

ステータスコードを設定したい

デフォルトではステータスコードは302が設定されているのですが、何らかの理由で変更したいというときはfunctions.phpに下記のように記述することで実装できます。

※下記の場合はステータスコードに301を指定したものになります。

functions.php

function redirect_after_comment() {
  wp_safe_redirect( home_url( '/' ), 301 );
  exit();
}
add_filter( 'comment_post_redirect', 'redirect_after_comment' );

特定のURLにリダイレクト

上で紹介してきたものに比べて使用機会は少なそうですが、コメントが投稿された後に外部リンクに飛ばしたいときなどに使える方法で、コードでハイライト部分に任意のURLを指定すればコメント投稿後にそのURLへとリダイレクトされます。

functions.php

function redirect_after_comment() {
  wp_redirect( 'http://example.com/' );
  exit;
}
add_filter( 'comment_post_redirect', 'redirect_after_comment' );

ここで紹介してきたものはいずれもwp_safe_redirect()またはwp_redirect()を使用しており、詳細については以下Codexで確認できます。

Close the search window,
please press close button or esc key.