【WordPress汎用】プラグイン不要でリダイレクト対応!特定URLのリダイレクト(転送)を「1箇所」で一括管理するカスタマイズ

リンク切れや記事の移行、まだ「プラグイン」を増やして解決しようとしていませんか?

ブログやサイトを運用していると、必ず直面する悩みがあります。

  • 一部の記事を別ページに移行した: 元のURL(/sample01)にアクセスした人を、自動で(/sample02)のURLに飛ばしたい。
  • SNSでURLを短く見せたい: 自社ドメインの短いURL(/link1)を、長いアフィリエイトリンクや外部ページへ転送したい。
  • プラグインを入れたくない
  1. 社内規定の壁: セキュリティ審査が厳しく、新しいプラグインを勝手に入れられない。
  2. 干渉リスクの壁: すでに多くのプラグインが入っており、これ以上増やすと不具合が怖い。
  3. 軽量化の壁: データベースに負荷をかけたくない。サイトを極限まで速く保ちたい。

たった数本のURLを転送したいだけなのに、多機能で重いプラグインを導入するのは、「爪を切るのにチェーンソーを使う」ようなものかなと思っています。

今回ご紹介するカスタマイズは、WordPressの標準的な仕組みを利用した、非常に軽量で汎用性の高いプログラムです。

人気の SWELL、AFFINGER6、Cocoon といった主要テーマはもちろん、自作テーマでも動作します。テーマの機能に依存しないため、将来のテーマ乗り換え時にもそのまま設定を引き継げるのが最大のメリットです。

目次

実際の動作サンプルはこちら

以下のURLをクリックしてみてください。当サイト内のURLですが、一瞬で外部の参考ページ(note等)へ自動転送されます。

https://internetwak.com/note/2322(→ INTWAKの特定のnote記事へ転送されます)

使い方はシンプル。 設定用のリストに「元のURL」と「転送先URL」を書くだけ。

設定のイメージ:直感的に管理できます

「プログラムなんて難しそう…」と思うかもしれませんが、安心してください。やることは、以下のエリアにURLを並べるだけです。

// 設定のイメージ:直感的に書き換えられます!
$redirects = [
    '/note/2322' => 'https://note.com/xxxx/n/n2cc1', // noteへ転送
    '/twitter'   => 'https://twitter.com/your-account', // SNSへ転送
    '/old-page'  => '/new-page', // サイト内の別記事へ転送
];
PHP

この1箇所を書き換えるだけで、サイト内の転送設定が一瞬で反映されます。

プラグインの管理画面をいちいち開く必要も、データベースを汚すこともありません。


実装マニュアル

ここからは、あなたのサイトを「プラグインに頼らない、高機能リダイレクト機」へとアップデートさせる全手順を解説します。

① プログラムの設置(コピペするだけ)

WordPress管理画面の「外観」>「テーマファイルエディター」から、使用しているテーマ(子テーマ推奨)の functions.php の末尾に以下のコードを貼り付けて保存してください。

/**
 * シンプル・リダイレクト管理システム
 */
add_action('template_redirect', function () {

    // =====================================================
    // 【設定エリア】
    // 書き方: '元のパス' => '転送先URL'
    // =====================================================
    $redirects = [
        '/note/2322' => 'https://note.com/intwak/n/n2cc14df80bb2',
        '/note/2264' => 'https://note.com/intwak/n/nbec892e6dab7',
        '/twitter'   => 'https://x.com/your_account',
        // ここに好きなだけ追加できます
    ];
    // =====================================================

    // 現在アクセスされているパスを取得(末尾の / は除去して判定)
    $request_path = rtrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');

    foreach ($redirects as $from => $to) {
        // 設定側のパスも末尾の / を無視して比較
        $from_path = rtrim(parse_url($from, PHP_URL_PATH), '/');

        if ($request_path === $from_path) {
            // 外部URL(http...)か内部URLかを判定して転送
            if (preg_match('#^https?://#', $to)) {
                wp_redirect($to, 301);
            } else {
                wp_safe_redirect(home_url($to), 301);
            }
            exit;
        }
    }
});
PHP

② 設定の具体例

  • 外部サイトへ飛ばす場合: ‘/youtube’ => ‘https://www.youtube.com/c/your-channel’,
  • サイト内の別記事へ飛ばす場合: ‘/old-post’ => ‘/new-post’,

③ 【重要】優先順位と追記のコツ

このプログラムは、リストの「上から順番」に条件が一致するかどうかをチェックしていきます。そのため、運用上のポイントが2つあります。

  1. 優先度の高いものを上に書く: もし似たようなURL設定がある場合は、より正確に一致させたいもの、優先したいものを上に記述してください。
  2. 最新のものは「上」に追記する: リダイレクト設定が増えてきたら、リストの先頭(上側)に新しい設定を追記していくのがおすすめです。これにより、新しい設定が優先的に処理され、管理もしやすくなります。

④ ミスをなくす「編集のコツ」

プログラムを編集する際、ブラウザの編集画面で直接書き換えるのはおすすめしません。予期せぬエラーを防ぐために、以下の手順を推奨します。

IME(日本語入力)をオフにする: IDの書き換えやスペースの入力は、必ず「半角英数モード」で行ってください。コメント部分以外で日本語入力がオンになっていると、エラーの元になります。

テキストエディタを使う: VS Code、サクラエディタ、秀丸エディタなどの「テキストエディタ」で編集してください。これらは全角スペースや特殊な空白を目立たせてくれるため、ミスが劇的に減ります。

▼おすすめのテキストエディタ

⑤ エラーが出た時の対処法

保存時に 「syntax error, unexpected identifier ” “」 というエラーが出た場合、犯人は 「目に見えない不純な空白(全角スペースや特殊空白)」 です。

エラー画面
  • 原因: ブラウザやチャットツールからコピーすると、見た目では分からない「特殊な空白( など)」が混じることがあります。
  • 解決策: エラーが出た行の空白を一度すべて消し、必ず 「半角モード」 でスペースを入れ直してください。

編集の際は、テキストエディタを推奨しております。
サクラエディタ、VS Codeなどの無料エディタで大丈夫です。
全角スペースや特殊な空白を目立たせてくれるため、ミスが劇的に減ります。

⑥ SEOに有利な「301リダイレクト」

このコードは、検索エンジンに対して「このページは恒久的に移動しました」と伝える「301リダイレクト」を送信します。これにより、元のURLが持っていたSEO評価を転送先に引き継ぐことができるため、サイトのパワーを維持したまま移行が可能です。

あとがぎ

無事に実装できましたでしょうか? 「プラグインを減らす」ことは、サイトのセキュリティ向上と高速化への第一歩です。このシンプルなコードが、あなたの快適なサイト運営のお役に立てば幸いです。

お問い合わせ先

不具合やカスタマイズのご相談は、こちらからお気軽にご連絡ください。

  • URLをコピーしました!
目次