【解決済】WordPressでは管理者以外AjaxでPHPからの返り値を受け取れないという衝撃の事実
この問題は解決しました
WordPressの問題ではなくこちらで実装したプラグインのバグでした。
以下の記事に詳細がありますので、ご参照ください。
BuddyPressで管理者以外のユーザを管理画面にアクセスさせない制御 - MoyaSystem
この記事そのものは自戒のため残しておきます。
はじめに
まじかよ。
何があったかというと
WordPress の画面上に投稿フォームを用意し、投稿が完了したらアラートを表示して記事の画面を見るか確認する機能を実装した。
投稿はAjaxで実装してやり、PHPでは投稿処理を行った後、記事のパーマリンクをechoで返すようにした。
ローカル環境でうまくいったので本番環境に意気揚々とのせたところ「動かないんだけど......」というクレームをいただいた次第。
驚愕の事実
さんざん調査した結果、どうも管理者権限を持つユーザとそれ以外のユーザではajaxの返り値が異なる!ということが判明。管理者ユーザではURLがきちんと返っているのに、それ以外のユーザではトップページのHTMLが返ってきている。なんだよこれ......
ということで
どうすればよいか思案中。これひょっとしたらうまくいかないケースかもしれん。所詮WordPressはブログツールだということか?