Plugin Load Filter Ver3.0 公開

一部で熱い支持を受けているWordPress のパフォーマンスをちょっとアップする Plugin Load Filter プラグインの Ver3.0 公開しました (^^♪

最近は YASAKANI Cache というキャッシュプラグインやグーグルフォトのアルバムを埋め込むサービスの開発を行っていたので全然更新していませんでした。

なんと1年ぶりの更新です

ときどき Plugin Load Filter をエゴサーチしているのですが、Contact Form 7 が機能しないという記事をいくつか見かけました

サイトを高速にする WordPress プラグイン Plugin Load Filter – FirstLayout
使用中のプラグインの読み込みをページ単位で制御し、サイトを簡単に高速化するWordPress プラグイン Plugin Load Filter の紹介です。
サイトを高速にする WordPress プラグイン Plugin Load Filter – FirstLayout

https://simple-k.com/wordpress/plugin-filter

自分のサイトでは Contact Form 7 も使えていたので、特定の環境で何か問題があるのかなぐらいに思っていたのですが、自分のサイトでも再現しました (^_^;)

エラーの原因

調べてみるとどうも Contact Form 7 が REST API を使うようになってからの問題のようです。結構時間がたっています (^_^;)

Contact Form 7 から問い合わせを実行すると http://(site)/wp-json/contact-form-7/... へリクエストが発行されますがこれを適正に処理できないケースがありました

固定ページを問い合わせページとしてそのページのみで contact form 7 プラグインを有効化していると contact form 7 からの wp-json というリクエストを固定ページへのリクエストと取り違えることで(ページフィルタで固定ページに対して contact form 7 が有効化されていない場合)このリクエストに対して contact form 7 がロードされず、そんな REST API のエンドポイントは知らないよということでエラーとなっているようでした

多くのプラグインで REST API のエンドポイントを登録して使われるようになると同様のことがたくさん発生しそう (^_^;)

これはいかんということで1年ぶりの更新です

URL フィルターによる対応

そもそも REST API って、WordPress のコアの機能と思っていたのですが、普通にいろいろなプラグインで活用されてきているようです

そこで、従来からベータ版として実装していた URL フィルタをちょっと改変して対応するのが一番やりやすそうだったので、URL フィルタに REST API, Ajax 用の専用の設定を設けることにしました

URLフィルタは、通常はすべて有効で使用しますが、 REST API、Heartbeat、Ajax、AMPページまたは任意のURLに対するリクエストに対して特別に停止したいプラグインがある場合に設定して使用します

この対応により従来の URLフィルタと非互換になったので、AMP等のURLフィルタを使っていた場合は再設定が必要です(Page Filter 側は従来どおりなので安心してください)

 

REST API / Heartbeat / Ajax

REST API (wp-json) や Heartbeat/Ajax (admin-ajax) に対するリクエストに対して停止するプラグインを設定することが出来ます

通常は全て有効でOKですが、明らかに REST API や Ajax で使われないプラグインを停止することで管理画面での負荷を低減することが出来るかも知れません

使用している現在のプラグインのソースコード内に ‘wp_ajax’ や ‘rest_api’ という文字列がなければそのプラグインに関してはおそらく停止可能と思われますが、ご自身で動作確認の上ご判断ください

 

wp-json や admin-ajax に対するリクエストに対してプラグインを停止させるかどうかを設定できるようにしたので、これで contact form 7 でも問題なく使えると思います

REST API で contact form 7 プラグインを停止させると ずっとクルクルが回り続けますが、有効化すれば正常に実行できることが確認できると思います

以上

contact form 7 で問題が出ている方は試してみて下さい m(__)m

 

go-to-top