adminCakePHP3とWordPressを使ってログインセッションを共有して会員サイトを作ってみたツイートシェアはてブGoogle+PocketCakePHP3とWordPressを同一URLに共存させることが可能ですが、セッション回りで上手くいかなかったりする場合があります。そこで、CakePHP3とWordPressを使ってログインセッションを共有して会員サイトを作った方法を紹介したいと思います。最後にやりたかったこと本題に入る前に、今回やりたかったことは下記の内容です。ツール購入者向けの購入者サイト、マニュアルサイトを立ち上げるWordPressを使ってマニュアルサイトを作成する購入者サイト、マニュアルサイトはユーザーごとに会員登録・ログインさせるWordPressのビジュアルエディタやウィジェットはとても使いやすく、当初はWordPressのユーザー管理で会員さんのログイン情報も管理したいと考えていました。WordPressで会員登録やログイン方法など構築していく中でうまくいかず挫折。WordPress」構成になりました。WordPress」の課題として、一番大きかったのがセッション回りでした。CakePHP3側でログインした後にWordPress側にも共有しないといけません。言ってもそう難しくはないですが、セッション回りの課題は下記で対応することにしました。WordPressのデフォルトクッキー名は「PHPSESSID」なのでCakePHP側のクッキー名も同一にするWordPressをCakePHPの静的コンテンツ置き場である「webroot」配下に設置するWordPress側は、ログインセッションをチェックするプラグインを作成してセッションチェックをおこなう今回は同一URLのため、上記の方法で対応が可能でした。それ以外の課題は特に大したことないので割愛します。構築してみる一からすべて書きたいとところですが、環境構築するのが大変なので、設定が必要な部分だけを書いていきたいと思います。URLはこんな感じを想定して構築していきます。■購入者サイト(CakePHP3が動作)http://sample.com/members/■マニュアルページ(WordPressが動作)http://sample.com/members/wpCakePHP側の対応クッキー名を「PHPSESSID」にしておくWordPress側のクッキー名が「PHPSESSID」になっているので、CakePHP側もそれに統一する必要があります。/config/app.phpファイルの最下部にセッションを記述する場所があるので、そちらで指定しておきます。//1days),],セッションキーを指定しておくWordPress側でログインしたかどうかチェックできるようにセッションキーをわかりやすいようにしておきます。デフォルトのままでもいいですが、AppControllerとかに記述しておきます。'Auth.Members';WordPress側の対応WordPress側の対応は、ログインセッションがあるかチェックとログインしていない場合は、ログインページにリダイレクトする処理を追加してあげます。追加する方法として、使用しているテーマのfunctions.phpファイルに記述するか、プラグインを作成して記述するかどちらでも良いと思います。テーマを変更する可能性がある場合やテーマのバージョンアップが定期的にある場合はプラグインとして作っておいた方が良いです。ことで今回はプラグインをつくる前提で書いています。プラグインを作成するプラグインの詳しい作り方は割愛しますが、「cakephp-auth」というプラグインを作成します。プラグイン名とかはなんでも良いですが、既存プラグイン名と被ってしまうと不具合の原因になるので、注意してください。「cakephp-auth/cakephp-auth-functions.php」ファイルを作成して下記のように記述します。'init_cakephp3_login_check');ログインURLを指定はログインページのURLを指定してあげる必要があります。それ以外はそのまま使用して大丈夫かと思います。ログインチェックする際は、WordPressの管理画面はWordPressの管理者がアクセスページなためログインセッションのチェックは行わないようにしています。マニュアルサイトを変更する際は、WordPressにログインして編集することから、WordPressにログインしている時もCakePHP側のセッション情報をチェックしないようにしています。プラグインの作成が完了したら「cakephp-auth」フォルダごと、WordPressのプラグイン設置場所である「/wp-content/plugins/」に配置します。管理画面から同プラグインを有効化おこなってください。動作確認これで、WordPress側もログインチェックすることができました。修正完了後は動作確認をしっかりおこなってください。WordPressのキャッシュプラグインを使っていると、ログインチェックが無効となってしまう場合があるので、注意してください。WordPress側にもログインユーザー名とかもセッション情報から取得することで出来たりしますが、WordPressのキャッシュプラグインは絶対使わないようにしましょう。第三者のページがキャッシュされ他の人に情報が見れてしまいます。スポンサーリンク最後に今回はCakePHP3とWordPressを使ってセッション回りを共有する方法を紹介しましたが、他のフレームワークでも同様なことができます。「PHPSESSID」がセキュリティ的によろしくないっていう方もいるかもしれませんが、WordPress側の設定を変更することで「PHPSESSID」を変更することができます。変更した場合はCakePHP側も同様のクッキー名に書き換えることで動作します。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。【CakePHP3】階層を持った静的ファイルにアクセスするとURLにwebrootが付与されてしまう現象の対処方法RECOMMENDこちらの記事も人気です。