2026年5月20日
2026年5月20日
WordPressのセッションが切れやすい場合の解決方法
はじめに
WordPressの管理画面にログインしていても、すぐに「セッションが切れました。再度ログインしてください。」と表示されることがあります。特にページの編集中に発生すると、書いた内容が消えてしまう深刻な問題になります。原因を理解して適切に対処しましょう。
症状・原因
- 管理画面を数分使うだけでログアウトされる
- ページ保存時に「ログインしてください」リダイレクトが起きる
- 「記事の変更を保存できませんでした」とnonce期限切れエラーが出る
主な原因:
1. サーバー時刻のずれによるCookie有効期限の誤判定
2. PHP セッション設定(session.gc_maxlifetime)が短すぎる
3. セキュリティプラグインが複数ログインを検知して強制ログアウト
4. サーバー側のロードバランサーがCookieを共有できていない
解決手順
ステップ1:ログイン持続時間を延長
「ログイン状態を保持する」チェックを有効にしていても期限切れになる場合は、Cookie有効期限をフィルターで延長します。
// functions.php に追加
// ログイン状態を保持する場合:30日に延長
add_filter('auth_cookie_expiration', function($expiration, $user_id, $remember) {
if ($remember) {
return 30 * DAY_IN_SECONDS;
}
return $expiration;
}, 10, 3);
ステップ2:サーバー時刻を確認・修正
# サーバー時刻を確認
date
# NTPで時刻同期(Ubuntu/Debian)
sudo timedatectl set-ntp true
timedatectl status
時刻がずれているとCookieの有効期限チェックに失敗し、正常なセッションが無効扱いになります。
ステップ3:WordPress認証Cookieの設定確認
// wp-config.php でCookieパスとドメインを明示
define('COOKIE_DOMAIN', 'example.com'); // wwwなし
define('COOKIEPATH', '/');
define('ADMIN_COOKIE_PATH', '/wp-admin');
define('SITECOOKIEPATH', '/');
サブディレクトリにWordPressをインストールしている場合、COOKIEPATH が正しくないとCookieが送信されません。
ステップ4:セキュリティプラグインの設定を確認
Wordfence・Sucuri・iThemes Securityには「同時ログイン制限」や「アイドルタイムアウト」機能があります。
- Wordfence: Wordfence → Login Security → 「Force two-factor」設定を確認
- iThemes Security: Security → Settings → Strong Password Enforcement の idle logout を確認
該当設定を緩和するか、IPをホワイトリストに追加します。
ステップ5:PHPセッション設定を延長
// wp-config.php または .htaccess
// Apacheの場合
php_value session.gc_maxlifetime 3600
php_value session.cookie_lifetime 3600
; php.ini で設定する場合
session.gc_maxlifetime = 3600
session.cookie_lifetime = 3600
ステップ6:ロードバランサー環境の確認
複数サーバーで負荷分散している場合、セッションをRedisやMemcachedで共有する必要があります。
// wp-config.php
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
Redis Object Cacheプラグインと組み合わせて使用します。
注意事項
- セッション有効期限を極端に長くすると、共有PCや紛失デバイスで不正アクセスのリスクが上がります
- Cookie設定を変更すると、既存の全ユーザーが一度ログアウトされます
- 変更前には必ずwp-config.phpをバックアップしてください
まとめ
セッション切れの最も多い原因はサーバー時刻のずれとCookie有効期限の設定ミスです。auth_cookie_expiration フィルターで期限を延長し、サーバー時刻をNTPで同期するだけで多くのケースが解決します。