【解決】WordPress Popular Postsでアクセスした記事が記録されなくなる

この件、解決しました。凡ミスでした。
プラグインもwordpressも無関係。お騒がせしました。

SiteGuard WP PluginでREST APIを拒否してたの忘れてた

見出しの通り。テストでいじってたのをすっかり忘れておりました。辛い。

ユーザー名漏えい防御にREST API無効化のチェックがあるのです。

ユーザー名漏えい防御にREST API無効化のチェックがあり、そこをチェックしてた。本当にすっかり忘れておりました。

ユーザー名漏えい、というかユーザー名の一覧取得がREST API使えば簡単にできちゃうので、それを抑止するメニューがあり、さらにREST APIまるごと無効化するもチェックが用意されていて、REST API止めるとどうなるかな?という確認でチェックしてました。
そして順調にwordpress-popular-postsが止まった次第。

言い訳するとwordpressにログインしていると動くのです

REST APIを無効化といっても、wordpressにログインしているとREST API有効になるんです。なのでwordpress-popular-postsも動く。
よーしREST API無効化してみよーってのでwordpressにログインしてREST API無効化しても、そのままログインしていると無効化されてなくて、あれあれ、普通に動いてるじゃないですか、となって気づかなった次第。
しばらくしてログアウトした状態で動かないことに気づいたという時間差攻撃をくらいました。

対処は除外プラグインにネームスペースを追加するだけ

見出しの通り。登録されるプラグインのネームスペースが出ているので、その中からwordpress-popular-postsを見つけて追加するだけでした。

そこに気づくまでREST APIの本体見てました

ぬおーwordprssめ!なんて気持ちで /wp-inclueds/rest-api/class-wp-rest-server.php の中身を見てました。
dispatchメソッドの最初のrest_pre_dispatchのapply_filtersで認証エラーになっていて、あれー変だなーおかしいなーなんてブツブツ言ってました。
だって自前でrest_pre_dispatchは書いてないもの。書いてないからREST API拒否されるわけないのに→拒否される、という状態だったわけで。

まんまとSiteGuard WP Pluginにrest_pre_dispatchありました

/wp-content/plugins/siteguard/classes/siteguard-disable-author-query.php の中でやってました。50行くらいしかないクラスなのでよーくわかりました。管理画面で除外してないプラグインのネームスペースを拒否する処理ですねっていう。

分かればなんでも簡単なものです

これにつきる。プラグインもwordpressも無関係。お騒がせしました。

この記事が気に入ったらサポートをしてみませんか?