ワードプレスのredirect_canonicalフィルタの使用方法・解説

概要

redirect_canonicalフィルタは、リクエストURLをサイトの基本ルールと比較してリダイレクトするために使用されます。このフィルタを利用することで、重複コンテンツの管理やSEOに適したリダイレクトを実装できます。以下のような機能を実装する際によく使われます。

  1. トレーリングスラッシュの追加
  2. wwwあり・なしのリダイレクト
  3. HTTPからHTTPSへのリダイレクト
  4. カスタムURLのリダイレクト
  5. 特定のページや投稿のリダイレクト
  6. 記事の更新に伴う古いURLからのリダイレクト
  7. 不正確なURLの修正
  8. リダイレクトループの防止

このフィルタは、WordPressのコアファイル wp-includes/canonical.php に含まれています。

構文

add_filter('redirect_canonical', 'your_custom_redirect_function', 10, 2);

パラメータ

  • $redirect_url (string): リダイレクト先のURL。
  • $requested_url (string): 元のリクエストURL。

戻り値

  • 変更されたリダイレクトURL。

関連する関数

redirect_canonical

使用可能なバージョン

このフィルタは、WordPress 2.7 以降で使用可能です。

含まれるコアファイルのパス

wp-includes/canonical.php

この関数のアクションでの使用可能性

アクション 使用可能
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード1: トレーリングスラッシュを追加する

add_filter('redirect_canonical', 'add_trailing_slash');

function add_trailing_slash($redirect_url) {
    if (!preg_match('//$/', $redirect_url)) {
        return trailingslashit($redirect_url);
    }
    return $redirect_url;
}

このサンプルコードは、URLにトレーリングスラッシュがない場合、スラッシュを追加するリダイレクトを実装しています。

サンプルコード2: wwwあり・なしでリダイレクト

add_filter('redirect_canonical', 'redirect_www');

function redirect_www($redirect_url) {
    if (!preg_match('/^https?://www./', $redirect_url)) {
        return preg_replace('/^https?:///', 'http://www.', $redirect_url);
    }
    return $redirect_url;
}

このサンプルコードは、wwwなしのURLにアクセスした際にwwwありのURLへのリダイレクトを実装しています。

サンプルコード3: HTTPからHTTPSへリダイレクト

add_filter('redirect_canonical', 'redirect_http_to_https');

function redirect_http_to_https($redirect_url) {
    if (is_ssl()) {
        return $redirect_url; 
    }
    return preg_replace('/^http:/', 'https:', $redirect_url);
}

このサンプルコードは、HTTPでのアクセスをHTTPSにリダイレクトする機能を実装しています。

サンプルコード4: 特定のカスタムURLをリダイレクト

add_filter('redirect_canonical', 'redirect_custom_url');

function redirect_custom_url($redirect_url){
    if (strpos($_SERVER['REQUEST_URI'], 'old-page') !== false) {
        return home_url('/new-page');
    }
    return $redirect_url;
}

このサンプルコードは、「old-page」でのアクセスを「new-page」にリダイレクトする機能を実装しています。

サンプルコード5: 不正確なURLを修正

add_filter('redirect_canonical', 'fix_incorrect_url');

function fix_incorrect_url($redirect_url) {
    if ($_SERVER['REQUEST_URI'] == '/incorrect-url') {
        return home_url('/correct-url');
    }
    return $redirect_url;
}

このサンプルコードは、不正確なURLへのアクセスを正しいURLにリダイレクトする機能を実装しています。

この関数について質問する


上の計算式の答えを入力してください