XPressME Integration Kit

フォーラム

Re: WordPress の更新画面への直リンクについて

#3425
toemon
キーマスター

WordPressでは/wp-admin/**にアクセスされた場合

auth_redirect()にて、ユーザーかログインしているどうかをチェックして、ログインしていない場合にはログインページにリダイレクトします。

auth_redirect()はユーザーがログインしているどうかをwp_validate_auth_cookie()で判定しますが、

wp_validate_auth_cookie()はWordPressのログインクッキーが存在しない場合は、ログインしていないと判断します。

ここで、/wp-admin/update-core.phpを直接ロードした場合、

先に実行される、get_currentuserinfo()でのユーザ判定の過程でWordPressログインクッキーを作成しのsetcookie()を実行しますが、

setcookie()でセットされたクッキーは、次にページをロードするまで有効にアクセスすることができませんので

その後のauth_redirect()の判定では、ログインしていないと判断しクッキーを消去したのち、ログインページにリダイレクトしてしまいます。

簡単に言うと、先にロードしたページでWordPressのログインクッキーが作成されていない限りログインページにリダイレクトしてしまうと仕様になっています。

従って、事前のWordPressログインなし(WordPressのログインクッキーなし)で/wp-admin/update-core.phpを直接ロードした場合は

ログインページにリダイレクトしてしまうということになります。

auth_redirect()自体、pluggableなので改変することは可能だと思いますが、WordPressバージョン間での互換を考えるとあまり手を加えたくないという思いがあります。

そこで、今後の考え方ですが、XPressME Integration Kit 単体でモジュールとしてインストールできる形態(XPressME Integration Module?)にして、

単体インストール後のアクセスでにWordPressが統合されていなければ、統合を促し、XPressME Integration Moduleの管理画面からWordPressをインストールする形にしたいと考えています。

この形式であれば、XPressME Integration Module 単体でのリポジトリが可能になるのではないかと考えています。

以上、簡単な解決には至りませんでしたが、ご報告させていただきます。