概要
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に書き換えます。