MoyaSystem

もやしです。

【解決済】WordPressでは管理者以外AjaxでPHPからの返り値を受け取れないという衝撃の事実

この問題は解決しました

WordPressの問題ではなくこちらで実装したプラグインのバグでした。
以下の記事に詳細がありますので、ご参照ください。
BuddyPressで管理者以外のユーザを管理画面にアクセスさせない制御 - MoyaSystem
この記事そのものは自戒のため残しておきます。

はじめに

まじかよ。

何があったかというと

WordPress の画面上に投稿フォームを用意し、投稿が完了したらアラートを表示して記事の画面を見るか確認する機能を実装した。
投稿はAjaxで実装してやり、PHPでは投稿処理を行った後、記事のパーマリンクをechoで返すようにした。
ローカル環境でうまくいったので本番環境に意気揚々とのせたところ「動かないんだけど......」というクレームをいただいた次第。

驚愕の事実

さんざん調査した結果、どうも管理者権限を持つユーザとそれ以外のユーザではajaxの返り値が異なる!ということが判明。管理者ユーザではURLがきちんと返っているのに、それ以外のユーザではトップページのHTMLが返ってきている。なんだよこれ......

ということで

どうすればよいか思案中。これひょっとしたらうまくいかないケースかもしれん。所詮WordPressはブログツールだということか?