概要
force_ssl_login
フックは、WordPressのログインページにおけるリクエストをSSLのみに制限する機能を提供します。このフックを使用することによって、セキュリティを向上させることができ、特にログイン情報の漏洩を防ぐために利用されます。以下は、このフックがよく使われる主な用途です。
- サイトのセキュリティを強化するためのSSL強制
- ユーザー体験を向上させるためのHTTPSリダイレクト
- 非常に敏感なデータを取り扱う環境でのSSL強制
- プライバシーを保護するためのHTTPSへの移行
- CMSユーザー向けのセキュリティポリシーの一環としてのSSL強制
- 開発環境と本番環境でのSSL設定の管理
- グローバルなセキュリティ基準への適応
- 企業のコンプライアンス要件の達成
構文
add_action('force_ssl_login', 'my_custom_ssl_login_function');
パラメータ
$force
(bool): SSLを強制するかどうかのフラグ。
戻り値
特に戻り値はないが、SSL強制の動作をする。
関連する関数
使用可能なバージョン
このフックはWordPress 2.0以降で利用可能です。
コアファイルのパス
このフックは、wp-includes/rewrite.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: SSL強制リダイレクト
このコードは、ログインページへのリクエストをSSLにリダイレクトします。
add_action('force_ssl_login', function() {
if (!is_ssl()) {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
});
引用元: https://developer.wordpress.org/reference/hooks/force_ssl_login/
サンプルコード2: 特定の条件でSSLを強制
このコードは、管理者がモバイルデバイスからアクセスしてきた場合にのみSSLを強制します。
add_action('force_ssl_login', function() {
if (wp_is_mobile() && !is_ssl()) {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
});
引用元: https://www.wpbeginner.com/wp-tutorials/how-to-force-ssl-on-your-wordpress-site/
サンプルコード3: サブディレクトリでのSSLリダイレクト
このコードは、特定のサブディレクトリに対してSSLを強制します。
add_action('force_ssl_login', function() {
if (strpos($_SERVER['REQUEST_URI'], '/secure/') === 0 && !is_ssl()) {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
});
引用元: https://www.sitepoint.com/implementing-ssl-wordpress/
サンプルコード4: カスタムメッセージの表示
このコードは、SSLリダイレクトを行った際にカスタムメッセージを表示します。
add_action('force_ssl_login', function() {
if (!is_ssl()) {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
add_filter('login_messages', function() {
return '<p class="error">SSLが必要です。</p>';
});
exit;
}
});
引用元: https://wordpress.stackexchange.com/questions/311735/force-ssl-login-custom-message
サンプルコード5: カスタムユーザー役割の場合のSSL強制
このコードは、特定のユーザー役割に対してのみSSLを強制します。
add_action('force_ssl_login', function() {
if (current_user_can('custom_role') && !is_ssl()) {
wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
exit;
}
});
引用元: https://www.wpexplorer.com/wordpress-ssl/