概要説明
プラグインで制御することが多いですがfunctions.phpでリダイレクトさせる場合のカスタマイズ。URL内に含まれるテキストから判定を行い、任意のURLにリダイレクトが可能です。
URLを指定してリダイレクト ( 外部サイトへリダイレクト )
functions.php
/*----------------------------------------------------
リダイレクトの制御
----------------------------------------------------*/
if ( !function_exists( 'my_redirect_to_url' ) ){
function my_redirect_to_url(){
$url = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : ''; // ページのURLを取得
if( strpos( $url, 'URL内に含まれるテキスト' ) !== false ){
// 含まれる場合はリダイレクト
wp_redirect( 'https://xxxxxxxxx.com/', 301 ); // リダイレクト先URL
exit;
}
}
add_action( 'template_redirect', 'my_redirect_to_url' );
}
同じWordPress内にリダイレクトさせる場合
functions.php
/*----------------------------------------------------
指定のテキストを含むURLの場合トップページを表示
----------------------------------------------------*/
if ( !function_exists( 'my_redirect_to_home' ) ){
function my_redirect_to_home(){
$url = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : ''; // ページのURLを取得
if( strpos( $url, 'URL内に含まれるテキスト' ) !== false ){
// 含まれる場合はリダイレクト
wp_safe_redirect( home_url( '/' ) ); // トップページにリダイレクト
exit;
}
}
add_action( 'template_redirect', 'my_redirect_to_home' );
}
2 つのコードは関数の名前を分けてあるので、両方を functions.php に貼っても動きます。
リダイレクトは、テーマのテンプレートを読む前に必ず動く template_redirect フックで行います(get_header はテーマによっては呼ばれないことがあり、そこで出力が始まっているとリダイレクトできません)。
URL の日本語はエンコードされた形(%E3…)で届くため、探す文字は英数字にするのが確実です。


