特定のURLの場合にリダイレクトさせる

広告WordPress・PHP を学べる本

Amazonのアソシエイトとして、WordPress functions.phpは適格販売により収入を得ています。

概要説明

プラグインで制御することが多いですがfunctions.phpでリダイレクトさせる場合のカスタマイズ。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…)で届くため、探す文字は英数字にするのが確実です。

関連機能

  1. 同じ部品の見出しを場所ごとに変える:get_template_part の 3 つ目の引数 $args の使い方

  2. ダッシュボードに自由に使えるメモ用エリアを追加

  3. WordPress の管理バーの「投稿を表示」を別のタブで開く:admin_bar_menu で target=”_blank” を足す

サイドバー

よく使うカスタマイズ

最近の記事

Profile

PAGE TOP