WordPress SWELLテーマのPV機能が計測できなくなり、SiteGuard WP Plugin の設定を変更して問題解消した話

WordPress SWELLテーマのPV機能が計測できなくなり、SiteGuard WP Plugin の設定を変更して問題解消した話

2024年7月10日

超ニッチな不具合やトラブルを解消したときだけ更新されるブログになってきました(笑)
しかし、Google検索では意外とそのものズバリの情報にあたらないっぽいので、書き残しておきます。

発生状況

先日、SWELLテーマでブログを運用されているクライアント様より「PV機能が動いていない」というご相談をいただき、調査しました。

※「PV機能」はSWELLテーマの独自機能です。

確かに、ある日を境にカウントが全くされていませんでした。

幸いなことに、PVカウントが0件になっている記事のうち、公開日が最も古い日付の前日に何をしたのか、はっきり記録を残してありました。

  • WordPress本体・プラグイン・テーマのアップデート
  • セキュリティ強化のためサーバー側のWAFの有効化
  • SiteGuard WP Plugin 導入

間違いなくこのどれかが原因だと確信しました。

※このように、何か新しい機能を導入するときやサーバ側の設定を変更する際は、「いつ」「何をしたか」を記録に残しておくことはものすごく役に立ちます。ぜひ習慣化してください!!

原因調査

真っ先に疑ったのはWAFでした。そこでテスト環境でWAFを無効にして、何度かアクセスしてみましたがカウントは増えず。ハズレでした。

次に、SWELLテーマのソースコードを見て、そもそもPV数をどういう仕組みでカウントアップしているのか確認しました。

テーマディレクトリ内を「PV」で全文検索。

なにやらREST APIを使って処理しているらしい

出てきた関数・変数を追っかけていくとカウントアップの処理が見つかりました。

カスタムフィールドの値を1つずつ増やしている。仕組みとしては非常にシンプル

シンプルに記事へのアクセスがあったらカスタムフィールドの値を更新するという仕様で、特段WAFにひっかかりそうな挙動でもないこと、REST APIを使っていることが分かりました。

次に記事ページをブラウザの開発者ツールで確認。コンソール上にエラーが出ていないか調べてみると、

しっかりと出ていました!!
しかも “swell-ct-pv” というそのものズバリの名前で、疑う余地なし。

さて、REST APIで401(Unauthorized)ってことは、認証失敗・権限不足です。
認証まわりで関連しそうなもの・・・なにか入れたっけ・・・?

ああ、SiteGuard WP Plugin か!

解決法 (お急ぎの方はここだけ読めばOK)

SiteGuard WP PluginでREST APIの権限を変更している機能は、「ユーザー名漏えい防御」です。

「ユーザー名漏えい防御」の設定ページでは、プラグインごとのREST APIエンドポイントの無効化ができます。
影響が出るプラグインだけ除外指定ができるようになっていますが、今回影響を受けたPVカウントはテーマ側の機能のため、除外リストに出てきません。

仕方がないので、「REST API無効化」のチェックを外しました。

変更を保存後、記事ページをコンソールで再度確認。

おお!真っ白!

エラーがきれいに消えていました!

投稿一覧画面のPV表示も、アクセスのたびに数字が増えていることが確認できました。

めでたしめでたし。
・・・真っ先にコンソールを見れば早かったのですが。

SWELLテーマもSiteGuard WP Pluginも使ってる人多いと思いますので、記事にしてみました。
SWELLのPV機能でアクセス数が計測されない、数字が変わらないとお困りの方は、SiteGuard WP Pluginを入れたことを忘れていないか確認してみてください。

ちなみにSWELLテーマ公式サイトの「推奨プラグインと非推奨・不要・注意すべきプラグインについて」ページにて、「その他、不具合の原因になるかもしれないプラグイン」としてSiteGuard WP Pluginが挙げられていました。

SiteGuard WP Plugin

日本語で設定できるので非常に人気のプラグインですが、PHP7.4にて不具合が発生してしまう報告がいくつか上がっています。

推奨プラグインと非推奨・不要・注意すべきプラグインについて | WordPressテーマ SWELL

当該サイトはPHP8環境ですが、今のところ本記事の件以外の問題は発生していません。

現場からは以上です。