2026年5月20日
2026年5月20日
WordPressの自動ログアウトの時間を変更する方法
はじめに
WordPressのデフォルトのセッション有効期限は「ログイン状態を保存する」にチェックしない場合は2日間、チェックした場合は14日間です。これを変更するには auth_cookie_expiration フィルタを使います。
デフォルトのセッション時間
| 設定 | デフォルト有効期限 |
|------|-----------------|
| ログイン状態を保存しない | 2日間(172800秒) |
| ログイン状態を保存する | 14日間(1209600秒) |
セッション時間を延長する
// functions.php — セッション有効期限を変更
add_filter('auth_cookie_expiration', function($expiration, $user_id, $remember) {
if ($remember) {
// 「ログイン状態を保存する」チェック時: 30日に延長
return 30 * DAY_IN_SECONDS;
}
// 通常ログイン時: 8時間に設定
return 8 * HOUR_IN_SECONDS;
}, 10, 3);
セッション時間を短縮する(セキュリティ強化)
// functions.php — セキュリティ重視:短いセッション
add_filter('auth_cookie_expiration', function($expiration, $user_id, $remember) {
// 管理者は1時間でログアウト
if (user_can($user_id, 'manage_options')) {
return HOUR_IN_SECONDS;
}
// 一般ユーザーは4時間
return 4 * HOUR_IN_SECONDS;
}, 10, 3);
「ログイン状態を保存する」チェックボックスを非表示
// functions.php — 「ログイン状態を保存する」を非表示
add_filter('login_footer', function() {
?>
<style>#rememberme, label[for="rememberme"] { display: none !important; }</style>
<?php
});
アクティブなセッションを管理する
# ユーザーのアクティブセッションを確認
wp user meta get {user_id} session_tokens
# 特定ユーザーの全セッションを強制ログアウト
wp user meta delete {user_id} session_tokens
# 全ユーザーの全セッションをリセット(セキュリティインシデント時)
wp config shuffle-salts
セッション期限切れ前に警告を表示
// functions.php — セッション残り時間を取得
add_action('admin_footer', function() {
$user_id = get_current_user_id();
$sessions = WP_Session_Tokens::get_instance($user_id);
$token = wp_get_session_token();
$session = $sessions->get($token);
if ($session) {
$expires_in = $session['expiration'] - time();
if ($expires_in < 300) { // 残り5分以内
echo '<script>alert("セッションが間もなく期限切れになります。");</script>';
}
}
});
注意事項
- セッション時間を長くするとセキュリティリスクが高まります。管理者アカウントは短めに設定してください
wp config shuffle-saltsを実行すると全ユーザーが強制ログアウトされますCOOKIE_DOMAINの設定が正しくないとCookieが機能しません
まとめ
セッション時間の変更は auth_cookie_expiration フィルタで $remember の値に応じて秒数を返すだけで実装できます。セキュリティ重視なら管理者は1時間以内に設定することを推奨します。