WordPress公式ディレクトリに、新しいプラグイン「Edel Auth for Supabase」を公開しました。
このプラグインは、その名の通りWordPressの会員認証をBaaS(Backend as a Service)である「Supabase」に置き換えるものです。

これまでも会員機能を外部連携するプラグインはありましたが、既存のものには「データベースが無駄に肥大化する」「セキュリティ境界が曖昧」といった課題がありました。それらを解決するために設計し、我ながら「WordPressにおけるモダンな会員管理の最適解」と言える仕上がりになったと自負しています。
今回は、なぜこのプラグインを作ったのか、その技術的なこだわりを紹介します。
こだわり1:WordPress側に「本当のパスワード」を持たせない
会員サイトを構築する際、最も神経を使うのがパスワードの管理です。 このプラグインの最大の特徴は、WordPressのデータベース(wp_users)には、認証に使う「本当のパスワード」を一切保存しないという点です。
WooCommerceなどの他プラグインとの互換性を保つために、WordPress側にもユーザーアカウント自体は作成します(同期します)。しかし、そのパスワード欄に格納されるのは、システムが自動生成した複雑でランダムなダミー文字列です。
実際の認証(ログイン判定)はすべてSupabase側のAPIで行われます。
つまり、万が一WordPressサイトが侵害され、データベースが流出したとしても、そこにあるのは無意味な乱数だけ。ユーザーのログイン資格情報(Supabase側のパスワード)は守られるという、強固なセキュリティ構造を実現しました。
こだわり2:DBを汚さない「Just-in-Time」同期
多くの連携プラグインは、導入した瞬間に外部サービスの全ユーザーをWordPressに取り込もうとします。しかし、数千、数万人のユーザーがいる場合、WordPressのデータベース(wp_users / wp_usermeta)は一瞬で肥大化してしまいます。
「Edel Auth for Supabase」は違います。 ユーザーが「ログインに成功した瞬間」にだけ、そのユーザー情報をWordPress側に作成(または更新)します。
- サイトを利用していない「幽霊会員」のデータでDBを圧迫しません。
- 常に最新のアクティブユーザーだけがWordPress上に存在するため、サイトのパフォーマンスを維持できます。
こだわり3:管理者と一般ユーザーの「完全分離」
セキュリティリスクの一つである「権限昇格攻撃」を防ぐため、ログインの入り口を明確に分けました。
- 一般ユーザー: Supabase経由のフロントエンドフォームからログイン
- 管理者(Administrator): 従来の
/wp-adminからWordPress標準機能でログイン
管理者が誤ってフロントエンドのフォームからログインしようとすると、プラグインがそれを検知してブロックします。これにより、管理画面への入り口をしっかりと守ることができます。
こだわり4:Supabase無料枠ユーザーへの愛「Keep Alive」
個人的に一番気に入っている、実用的な機能がこれです。 SupabaseのFreeプランは素晴らしいですが、1週間アクセスがないとプロジェクトが一時停止(Pause)してしまう仕様があります。開発中や小規模な運用では、これで困ることがよくあります。
そこで、プラグインに「Keep Alive」機能を搭載しました。 これをONにしておけば、WordPressが1日1回、自動的にSupabaseへアクセスを行い、プロジェクトの停止を防ぎます。地味ですが、運用者には涙が出るほどありがたい機能はずです。
こだわり5:ショートコードで「どこでも」フォーム化
WordPress標準のログイン画面(wp-login.php)に飛ばされる仕様は、サイトの世界観を壊してしまいがちです。 このプラグインでは、登録・ログイン・ログアウト・パスワードリセットといった必要なフォームをすべてショートコード化しました。
[eafs_login]:ログインフォーム[eafs_register]:新規登録フォーム[eafs_logout]:ログアウトボタン[eafs_forgot_password]:パスワードリセット
固定ページに埋め込んで「会員専用ログインページ」を作るのはもちろん、サイドバーのウィジェットや、ポップアップモーダルの中に設置することも可能です。 デザインや導線を自由に設計できるよう、HTML構造もシンプルに保っています。
もちろん、管理画面内に設定ページも用意しています。


こだわり6:開発者のための「拡張フック」
「かゆいところに手が届かない」プラグインにはしたくありませんでした。 私自身が受託開発を行うエンジニアだからこそ、カスタマイズの余地(Hooks)を意図的に用意しています。
例えば、functions.php に少しコードを書くだけで、以下のような高度な制御が可能です。
- eafs_user_role フィルター: 「Googleログインで登録した人だけ『寄稿者』権限にする」「特定のドメインのメールアドレスは『管理者』にする」といった、認証プロバイダに応じた権限の振り分けが可能です。
- eafs_after_user_sync アクション: Supabase側で持っているメタデータ(表示名やアイコンURLなど)を、WordPressのユーザーメタデータに同期させたり、最終ログイン時間を記録したりする処理を簡単に追加できます。
ブラックボックス化せず、開発者が自社の要件に合わせて拡張できる「余白」を残した設計にこだわりました。
ダウンロード
WordPress公式ディレクトリから無料でダウンロード可能です。 モダンでセキュア、そしてデータベースに優しい会員サイト構築をお考えの方は、ぜひ試してみてください。
