Cookie Tastingという新プラグインをリリースしました

WordPressプラグインCookie Tastingをリリースしました。このプラグインは……

  • ログイン時にCookieを付与する
  • 定期的(デフォルト5分)ごとにCookieをリフレッシュする

というプラグインです。Cookieに格納できる情報はデフォルトですと、下記の通りです。

  • ユーザー名
  • REST API用のnonce
  • ログアウト用のnonce

Cookieに書き込む情報はフィルターでカスタマイズできます。

なんのためのプラグイン?

さて、冒頭の説明だけだと「なんのこっちゃ」ですが、勘のいい方はお気付きの通り、これはこんにちは◯◯さん問題を解決するためのプラグインです。

ある程度アクセスの多いWordPressサイトを構築している場合、AWS CloudFrontなどのCDNキャッシュを利用することも多いでしょう。その場合問題となるのが、ページをキャッシュする/しないの二択しか存在しないことです。

キャッシュした場合、「こんにちは◯◯さん」をPHP経由で出すことはできません。しかし、Cookieに保持した値を出すだけなら、JavaScriptでもできるね、というわけですね。

このプラグインのこだわりポイントとしては、ログイン、ユーザー登録、商品のカート追加などなど、サイトによって様々に存在するアクションの実行直前にCookieの状態を最新に保てること。こんな感じです。

CookieTasting.testBefore().then( function( response ) {
    // チェックOK。ログインしているので、プレミアムコンテンツ取得を試みる。
    return wp.apiFetch({ path: '/premium/contnets' });
}).catch( function( response ) {
    // エラー!
    // ログインしていない or コンテンツ閲覧権限がない。
    // エラーを表示するなり、リダイレクトするなり
} );

Promise形式で返ってくるので、UIを作るのが楽になります。

Cookieをチェックする際にはどうしてもWordPressへのアクセス(=MySQLへの接続)が発生してしまうのですが、アクションが大事なものであればそこはリソースを消費してもしょうがないというポリシーです。

実際の使い方

タロスカイではこのプラグインを「アクセスもコンテンツも大量にある会員制メディアサイト」で導入しました。キャッシュをしつつ、ユーザーに応じたコンテンツを出し分けることができます。某フー!砲を食らっても安心!

問題点というか、試みとして新しいがゆえの難しさなのですが、「WordPressテーマにReactを混在させて作る」というのがハードルが高いですね。まだそれほど知見が溜まっていないので、チームに説明をするのが困難ですし、そもそもなぜそれをやらなければならないのかを理解してもらうのが大変です。また、ビジネス的な話なのですが、「なぜこのプラグインがすごいの?」という点がわかりづらいのも泣き所。

いまのところ、自作のカスタムテーマ以外ではメリットを感じられないプラグインですが、大規模メディアでは必須プラグインになるのでは、と手応えを感じています。名前もよくないですか? いままで何十個もプラグインを作ってきましたが、最高のネーミングになったと自負しています。

というわけで、「サイトをキャッシュしたらこんにちは◯◯さんって出せない!」とお悩みの方はぜひ利用してみてください。