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

概要

wp_replace_insecure_home_url フィルタは、コンテンツ内のサイトアドレスを http から https に書き換えるためのフィルタです。このフィルタは、セキュリティを強化するためや、HTTPS化されたサイトで問題を回避するためによく使用されます。具体的には、次のような場面で利用されます。

  1. サイトのリソース(画像、スクリプトなど)がHTTP経由で読み込まれないようにするため。
  2. コンテンツ内のURLをすべてHTTPSに統一するため。
  3. SEO対策として、HTTPSサイトのインデックス化に対応するため。
  4. ブラウザのMixed Contentエラーを防ぐため。
  5. ユーザーのセキュリティを強化するため。
  6. サードパーティのプラグインやテーマがHTTPリソースを使用しないようにするため。
  7. 301リダイレクトを使ってHTTPからHTTPSへ自動的に転送するため。
  8. 自サイト内の外部リンクをHTTPSに変更するため。

構文

add_filter('wp_replace_insecure_home_url', 'your_custom_function');

パラメータ

  • $url (string): 変更前のURL。
  • $post_id (int): 投稿ID。

戻り値

  • (string): 書き換えられたURL。

関連する関数

関連する関数は こちら で確認できます。

使用可能なバージョン

wp_replace_insecure_home_url フィルタは WordPress 4.8.0 以降で使用可能です。

コアファイルのパス

wp-includes/default-filters.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

サンプルコード

以下は、wp_replace_insecure_home_url フィルタを使用したサンプルコードです。

サンプル1: URLをHTTPSに変換する

add_filter('wp_replace_insecure_home_url', function($url) {
    return str_replace('http://', 'https://', $url);
});

このコードは、http://https:// に書き換えるフィルタを追加します。

サンプル2: 投稿のURLをHTTPSに変換

add_filter('wp_replace_insecure_home_url', function($url, $post_id) {
    return str_replace(home_url(), home_url('/'), $url);
}, 10, 2);

このコードは、投稿のURLをHTTPSに書き換えます。

サンプル3: 埋め込み画像のURLをHTTPSに変換

add_filter('wp_replace_insecure_home_url', function($url) {
    return str_replace('http://yourdomain.com', 'https://yourdomain.com', $url);
});

このコードは、埋め込まれた画像のURLをHTTPSに書き換えます。

サンプル4: 特定の条件に基づいてURLを変更

add_filter('wp_replace_insecure_home_url', function($url) {
    if (is_admin()) {
        return $url;  // 管理画面では変更しない
    }
    return str_replace('http://', 'https://', $url);
});

このコードは、管理画面ではURLを変更しないようにします。

サンプル5: 特定の投稿タイプの場合のみURLをHTTPSに変更

add_filter('wp_replace_insecure_home_url', function($url, $post_id) {
    $post_type = get_post_type($post_id);
    if ($post_type === 'custom_post_type') {
        return str_replace('http://', 'https://', $url);
    }
    return $url;
}, 10, 2);

このコードは、特定の投稿タイプの場合のみURLをHTTPSに書き換えます。

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


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