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時間以内に設定することを推奨します。

お気軽にご相談ください

お見積りへ お問い合わせへ