概要
wp_replace_insecure_home_url フィルタは、コンテンツ内のサイトアドレスを http から https に書き換えるためのフィルタです。このフィルタは、セキュリティを強化するためや、HTTPS化されたサイトで問題を回避するためによく使用されます。具体的には、次のような場面で利用されます。
- サイトのリソース(画像、スクリプトなど)がHTTP経由で読み込まれないようにするため。
- コンテンツ内のURLをすべてHTTPSに統一するため。
- SEO対策として、HTTPSサイトのインデックス化に対応するため。
- ブラウザのMixed Contentエラーを防ぐため。
- ユーザーのセキュリティを強化するため。
- サードパーティのプラグインやテーマがHTTPリソースを使用しないようにするため。
- 301リダイレクトを使ってHTTPからHTTPSへ自動的に転送するため。
- 自サイト内の外部リンクを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に書き換えます。