WordPress での一般的な状態管理の方法
WordPress では、ユーザーの認証状態やフォームの入力状態など、様々なデータを管理する必要があります。状態管理の方法には PHP と JavaScript の両方を活用できる技術があります。
✅ PHP を使った状態管理(サーバーサイド)
① $_SESSION(セッション)を使用
短期間のユーザー状態を管理するために使用。ログイン処理や一時データ(認証コード、フォームデータ)の保存に最適です。
session_start();
$_SESSION['verified_user'] = true; // 認証済みフラグを設定
- ユーザーごとの一時的な状態を管理可能
- ブラウザを閉じるとセッションは消える(session_destroy() も可能)
② WordPress の wp_options テーブルを利用
全体的な設定や一時的な状態を wp_options に保存し、サイト全体で利用できます。
update_option('maintenance_mode', true); // メンテナンスモードをONにする
$maintenance = get_option('maintenance_mode'); // 設定を取得
- サイト全体の設定を保存するのに適している
- データは MySQL に保存され、永続的に保持される
③ user_meta テーブルを活用(ユーザーごとの状態管理)
特定のユーザーに紐づいたデータを user_meta に保存し、個別に管理できます。
update_user_meta($user_id, 'last_login_time', time()); // 最終ログイン時間を保存
$last_login = get_user_meta($user_id, 'last_login_time', true); // データを取得
- ログイン状態や個別のユーザー情報を長期保存できる
- セッションと異なり、データが永続的に保持される
✅ JavaScript を使った状態管理(フロントエンド)
① localStorage
ブラウザに永続的にデータを保存する場合に使用。リロードしても消えません。
localStorage.setItem("authenticated_email", "user@example.com"); // 保存
const email = localStorage.getItem("authenticated_email"); // 取得
② sessionStorage
セッション(タブを閉じると消える)にデータを保存する場合に使用。
sessionStorage.setItem("formData", JSON.stringify({name: "John"})); // 保存
const data = JSON.parse(sessionStorage.getItem("formData")); // 取得
③ cookies(クッキー)
サーバーと連携しながら状態管理を行う場合に使用。
document.cookie = "user_logged_in=true; path=/; max-age=3600"; // 1時間保持
✅ Redux や Vuex(SPA 向け)
React や Vue.js を使った WordPress の SPA 化に適した状態管理手法です。
const store = createStore(reducer);
store.dispatch({ type: "LOGIN", payload: user });
const user = store.getState().user;
📌 まとめ
技術 | 用途 | メリット | デメリット |
---|---|---|---|
$_SESSION | 一時的な認証や状態管理 | 短期的なデータ管理が簡単 | セッションが切れると消える |
wp_options | サイト全体の設定 | 永続的に保持される | サイト全体に影響を与える |
localStorage | フロントエンドの状態管理 | リロードしても消えない | ログイン管理には不向き |
WordPress での状態管理は PHP ($_SESSION, wp_options, user_meta) と JavaScript (localStorage, cookies) を適切に組み合わせるのがポイントです!