WordPressでコメントが投稿された際、デフォルトではコメント投稿後もそのまま同じページが表示されていますが、これを任意のページにリダイレクトさせる方法です。
わかりやすい用途としては例えばコメントを投稿してくれたお礼などの内容は書かれたサンキューページをあらかじめ用意しておいて、コメント投稿後はそこへリダイレクトさせるなどの利用方法があります。
TOPページにリダイレクト
コメント投稿後にTOPページにリダイレクトしたいときには、functions.php
に下記のように記述します。
注意点としてはwp_safe_redirect()
は自動的にexit(処理の中止)をしないので、リダイレクト処理直後にexit();
を記述する必要があります。
add_filter( 'comment_post_redirect', 'redirect_after_comment' );
function redirect_after_comment() {
wp_safe_redirect( home_url( '/' ) );
exit();
}
その他ページにリダイレクト
あらかじめ固定ページを利用するなどしてサンキューページを用意しておき、コメント投稿後にそのページが表示されるという動きにしたいときなどに使える方法です。
実装にはfunctions.php
に下記のように記述し、これをWordPressインストール直後にそのまま使用した場合は、コメント投稿後に最初から用意されているサンプル固定ページにリダイレクトされます。
他のページにしたい場合は、コードで'/sample-page/'
としている部分を任意のページを指定すればコメント投稿後にそのページへとリダイレクトされます。
add_filter( 'comment_post_redirect', 'redirect_after_comment' );
function redirect_after_comment() {
wp_safe_redirect( home_url( '/sample-page/' ) );
exit();
}
ステータスコードを設定したい
デフォルトではステータスコードは302
が設定されているのですが、何らかの理由で変更したいというときはfunctions.php
に下記のように記述することで実装でき、下記の場合はステータスコードに301
を指定したものになります。
add_filter( 'comment_post_redirect', 'redirect_after_comment' );
function redirect_after_comment() {
wp_safe_redirect( home_url( '/' ), 301 );
exit();
}
特定のURLにリダイレクト
上で紹介してきたものに比べて使用機会は少なそうですが、コメントが投稿された後に外部リンクに飛ばしたいときなどに使える方法で、コードで'http://example.com/'
としている部分を任意のURLに指定すればコメント投稿後にそのURLへとリダイレクトされます。
add_filter( 'comment_post_redirect', 'redirect_after_comment' );
function redirect_after_comment() {
wp_redirect( 'http://example.com/' );
exit;
}