Staging 環境を持つ WordPress サイトを管理する際、変更を本番に PUSH することは重要なプロセスです。本番サイトを一貫して機能する状態に保ちます。しかし、この処理中に Staging サイトのアクティブなユーザーセッションが本番環境に持ち越されることがあり、セキュリティリスクをもたらしたり、ユーザーが古い情報を見るなどの予期しない挙動につながる可能性があります。
これに対処し、すべてのユーザーが更新されたサイトを見ることを確実にするために、カスタム WordPress フィルターを使用して Staging サイトを本番に PUSH した後にすべてのユーザーを自動的にログアウトさせることができます。これにより Staging サイトからのセッションデータが無効化され、ユーザーは再度ログインする必要があります。WP STAGING でこの解決策を実装する方法をご紹介します。
問題: セッションの持続
Staging サイトを本番に PUSH すると、ログイントークンを含むユーザーセッションデータも転送されます。その結果:
- Staging サイトのユーザーが本番サイトでログインしたままになる可能性があります。
- 機密データが誤ってアクセス可能なままになる可能性があります。
- トークンの悪用によってセキュリティリスクが発生する可能性があります。
解決策: カスタムフィルターを使用してユーザーセッションを無効化する
WP STAGING が提供する wpstg_pushing_complete アクションを活用することで、PUSH 直後にすべてのアクティブユーザーセッションを無効化する関数をトリガーできます。これは WordPress データベースに保存されたセッショントークンを削除することで実現されます。
コードの実装
Staging サイトを本番に PUSH した後にすべてのユーザーをログアウトさせるためのコードスニペットは次のとおりです:
/**
* Log out all users after pushing a staging site to production.
*/
function myPrefixinvalidateAllUsers()
{
// Access the global $wpdb object to interact with the database
global $wpdb;
// Cleanup session tokens from the usermeta table
$wpdb->query("DELETE FROM {$wpdb->prefix}usermeta WHERE meta_key = 'session_tokens'");
}
// Hook the function to WP Staging's 'wpstg_pushing_complete' action
add_action('wpstg_pushing_complete', 'myPrefixinvalidateAllUsers');
動作の仕組み
- データベースクリーンアップ:
myPrefixinvalidateAllUsers()関数は WordPress のusermetaテーブルと対話し、session_tokensメタキーに関連付けられたすべてのレコードを削除します。これによりすべてのアクティブユーザーセッションが効果的に無効化されます。 - アクションのトリガー:
wpstg_pushing_completeフックは、WP STAGING が Staging サイトの本番への PUSH 処理を完了したときに発火されます。この段階で関数が自動的に実行されます。 - 結果:
セッショントークンが削除されると、すべてのユーザーがログアウトされ、本番サイトにアクセスするには再度ログインする必要があります。
実装手順
- Must-Use Plugin (MU-Plugin) を作成する:
- 本番サイトの
wp-content/mu-plugins/ディレクトリに移動してください。ディレクトリが存在しない場合は作成してください。 invalidate-user-sessions.phpのような新しい PHP ファイルを作成してください。- 上記のコードスニペットをこのファイルにコピーして貼り付けてください。
- 本番サイトの
- デプロイ:
- ファイルを保存し、
mu-pluginsディレクトリにアップロードされていることを確認してください。 - これで WP STAGING は本番への PUSH 後に自動的にすべてのユーザーをログアウトさせます。
- ファイルを保存し、
メリット
- セキュリティの向上: Staging 環境のユーザーが誤って本番サイトにアクセスすることがなくなります。
- 制御の強化: デプロイ後に検証済みのユーザーのみが再ログインできることを保証します。
- 合理化された管理: デプロイ処理中のセッション管理を自動化します。
追加の注意事項
- この解決策は WP STAGING の本番への PUSH 機能のみに適用されます。他の WordPress 機能や後で作成されたセッションには影響しません。
- マルチサイトの構成では、必要に応じてすべてのサブサイトでスクリプトが実行されるようにしてください。
このアプローチにより、Staging から本番へのスムーズな移行を確保しながら、安全で信頼性の高い本番環境を維持できます。