2026年10月16日

2026年10月16日

WordPressの「ログイン状態を保存する」チェックを無効化する方法(非表示とサーバー側の強制)

WordPress のログイン画面にある「ログイン状態を保存する」を無効化するには、チェックボックスを隠すだけでは足りず、送信された値をサーバー側で無視する処理も必要です。この記事では、このチェックが何を変えているのかを確認したうえで、wp-login.php と wp_login_form()、プラグイン独自のフォームそれぞれでの無効化方法と、反映の確かめ方を説明します。共用 PC での利用が多い社内サイトや、会員情報を扱うサイトで、ブラウザを閉じたらログアウトさせたい場合に向けた内容です。

チェックが変えているもの

「ログイン状態を保存する」にチェックを入れると、ログインフォームから rememberme という値が送られます。WordPress はこの値を見て、ログイン Cookie の作り方を変えます。

  • チェックなし:Cookie は「セッション Cookie」として発行され、ブラウザを閉じると消える。サーバー側の有効期限は標準で2日
  • チェックあり:Cookie に有効期限が付き、ブラウザを閉じても残る。サーバー側の有効期限は標準で14日

つまり、チェックを無効化する目的は「ブラウザを閉じたらログアウトさせる」ことと「長期間のログインをさせない」ことの2つです。共用端末で前の人のログインが残ったままになる事故は、前者で防げます。

なお、ブラウザの設定で「前回のタブを復元する」を有効にしていると、セッション Cookie も復元されることがあります。チェックを無効化しても、ブラウザ側の設定によってはログインが残る場合がある点は、利用者への案内に含めておくとよいでしょう。

方法1:wp-login.php のチェックを隠し、値を無視する

標準のログイン画面には、チェックボックスを取り除くためのフィルターがありません。そこで「CSS で隠す」と「送信された値を捨てる」を組み合わせます。CSS だけだと、開発者ツールなどで値を送れば長期ログインできてしまうため、サーバー側の処理が本体です。

コードは mu-plugin として置くと、テーマの切り替えに影響されず、誤って無効化されることもありません。

<?php
/**
 * Plugin Name: ログイン状態の保存を無効化
 * 配置先: wp-content/mu-plugins/disable-remember-me.php
 */

// 1. 送信された rememberme を捨てる(wp-login.php の処理より前に実行される)
add_action( 'login_init', function () {
    unset( $_POST['rememberme'], $_REQUEST['rememberme'] );
} );

// 2. チェックボックスを画面から隠す
add_action( 'login_enqueue_scripts', function () {
    wp_add_inline_style( 'login', '.login .forgetmenot { display: none; }' );
} );

login_init は wp-login.php の処理の冒頭で実行されるアクションです。ここで値を消しておけば、その後のログイン処理では「チェックなし」として扱われます。ログイン画面のスタイルシートは login というハンドル名で読み込まれるため、wp_add_inline_style() で CSS を追加できます。

管理画面で一定時間操作しなかったときに表示される再ログイン用の小さな画面も、内部では wp-login.php を使っているため、同じ処理が効きます。

方法2:wp_login_form() で出しているフォーム

固定ページやウィジェットに wp_login_form() でログインフォームを出している場合は、引数の remember を false にするとチェックボックスが表示されなくなります。

<?php
// テンプレート内で呼び出す場合
wp_login_form( array(
    'remember' => false,
) );

サイト内のすべての wp_login_form() に一括で適用したいときは、login_form_defaults フィルターで既定値を変えます。

add_filter( 'login_form_defaults', function ( $defaults ) {
    $defaults['remember'] = false;
    return $defaults;
} );

wp_login_form() のフォームは送信先が wp-login.php なので、方法1のサーバー側の処理もそのまま効きます。表示を消す設定と、値を捨てる処理を両方入れておくのが安全です。

方法3:プラグイン独自のログインフォーム

WooCommerce のマイアカウントページや会員プラグインのログインフォームは、wp-login.php を通らずに独自にログイン処理をしていることがあります。その場合、login_init の処理は効きません。対応方法はプラグインごとに異なります。

  • プラグインの設定を確認する:チェックボックスの表示・非表示を設定で切り替えられるものがあります。項目名はバージョンで変わるため、「ログイン」「フォーム」関連の設定を探してください
  • テンプレートを上書きする:WooCommerce のようにテンプレートの上書きに対応したプラグインでは、子テーマでログインフォームのテンプレートを上書きし、チェックボックスを取り除けます。ただし、本体の更新でテンプレートが変わると古い上書きが残るため、更新のたびに差分を確認する必要があります
  • 有効期限で上限をかける:表示を消せない場合の保険として、auth_cookie_expiration フィルターで「チェックあり」の場合の期限も短くしておけば、少なくとも長期ログインは防げます

保険として期限をそろえるコードは次のとおりです。ただしこの方法では Cookie がブラウザを閉じても残る点は変わらないため、フォーム側の対応とあわせて使ってください。

add_filter( 'auth_cookie_expiration', function ( $length, $user_id, $remember ) {
    // チェックの有無にかかわらず、最長8時間にそろえる
    return 8 * HOUR_IN_SECONDS;
}, 10, 3 );

反映されたかを確かめる

変更後は、次の手順で確認します。いずれもプライベートウィンドウで試すと、既存の Cookie に影響されずに済みます。

  1. ログイン画面にチェックボックスが表示されていないことを確認する
  2. ログイン後、開発者ツールで wordpress_logged_in_ で始まる Cookie を開き、有効期限が「セッション」になっていることを確認する
  3. ブラウザのウィンドウをすべて閉じて終了し、開き直して、管理画面へのアクセスでログイン画面に戻されることを確認する
  4. 独自のログインフォームがあるなら、そのフォームでも同じ確認をする

すでに長期の Cookie でログインしている利用者には、変更が効くのは次回のログインからです。すぐに切り替えたい場合は、対象ユーザーのセッションを終了させるか、wp-config.php の認証用キーを入れ替えて全員を一度ログアウトさせます。キーを入れ替える前には、wp-config.php のバックアップを取ってください。

作業時の注意点

  • ステージングで先に試す:キャッシュプラグインがログイン画面をキャッシュしていると、表示の変更がすぐに反映されないことがあります
  • 戻す手段を確保する:mu-plugin のファイルは FTP やファイルマネージャーで削除すれば元に戻ります。構文エラーでサイトが止まった場合に備えて、接続できることを作業前に確かめます
  • 利用者への影響を伝える:毎回ログインが必要になるため、パスワード管理ツールの利用を案内しておくと問い合わせが減ります
  • 二段階認証との兼ね合い:毎回のログインで二段階認証のコード入力が求められるようになるため、負担が増えすぎないか確認します

紹介したフック名とログイン画面の構造は、WordPress 6.x 系(2026年10月現在)の実装にもとづいています。

まとめ

  • 「ログイン状態を保存する」は、Cookie をブラウザ終了後も残すかどうかと、有効期限(標準2日か14日か)を切り替えている
  • 無効化は「チェックボックスを隠す」と「送信された rememberme を捨てる」の両方で行う。CSS だけでは不十分
  • wp_login_form() は remember 引数か login_form_defaults フィルターで非表示にできる
  • プラグイン独自のフォームは個別対応が必要。保険として auth_cookie_expiration で期限の上限をかける
  • 変更は次回ログインから効く。プライベートウィンドウで Cookie の有効期限を確認する

お気軽にご相談ください

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