SWELL│REST API 401エラー「swell-ct-pv」の原因と解決方法

WordPressテーマ「SWELL」を使用していて、ブラウザのコンソールに以下のようなエラーが表示されていませんか?

main.min.js?ver=2.16.0:1 
 POST https://hogehoge.com/wp-json/wp/v2/swell-ct-pv 401 (Unauthorized)

main.min.js?ver=2.16.0:1 TypeError: Failed callRestApi: 401
    at main.min.js?ver=2.16.0:1:297

main.min.js?ver=2.16.0:1 route:swell-ct-pv 
{method: 'POST', body: URLSearchParams}

この記事では、このエラーの原因と解決方法を解説します。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

エラーの内容

このエラーは、SWELLテーマがWordPressのREST APIを使ってPV(ページビュー)カウントを記録しようとした際に、認証エラー(401 Unauthorized)が発生していることを示しています。

影響

  • サイトの表示自体には影響しない
  • 人気記事ウィジェットのPVカウントが正常に動作しない可能性がある
  • SWELLの一部機能が正しく動作しない可能性がある

エラーの原因

このエラーは、セキュリティ系プラグインやパフォーマンス系プラグインがREST APIをブロックしていることが原因です。

主な原因となるプラグイン:

  • Perfmatters
  • XO Security
  • SiteGuard WP Plugin
  • Wordfence
  • All In One WP Security
  • iThemes Security

解決方法

使用しているプラグインに応じて、以下の設定を確認してください。

Perfmatters の場合

Perfmattersを使用している場合、REST APIを無効化する設定が有効になっている可能性があります。

  1. WordPress管理画面 → PerfmattersOptions
  2. 「Disable REST API」の項目を確認
  3. 以下のいずれかになっていたら変更
    • 「Disable for Non-Admins」→ 「Default (Enabled)」に変更
    • 「Disable When Logged Out」→ 「Default (Enabled)」に変更
  4. Save Changesをクリック

XO Security の場合

XO Securityを使用している場合、REST APIの制限設定を確認します。

  1. WordPress管理画面 → 設定XO Security
  2. 「REST API」タブを開く
  3. 「REST APIの無効化」がオンになっている場合、以下のエンドポイントを許可リストに追加(チェックを入れる)
/wp/v2/swell-ct-pv
/wp/v2/swell-block-settings
/wp/v2/swell-ct-btn-data
/wp/v2/swell-ct-ad-data
/wp/v2/swell-lazyload-contents

または、REST APIの制限を完全にオフにする。

SiteGuard WP Plugin の場合

  1. WordPress管理画面 → SiteGuardREST API
  2. 「REST APIを無効化」をオフにする

Wordfence の場合

  1. WordPress管理画面 → WordfenceFirewall
  2. 「Advanced Firewall Options」を開く
  3. REST APIに関連する制限を確認し、必要に応じて緩和

その他の確認事項

.htaccess の確認

.htaccessファイルにREST APIをブロックするコードがないか確認してください。

# このようなコードがあれば削除
RewriteRule ^wp-json/ - [F]

functions.php / Code Snippets の確認

テーマのfunctions.phpやCode Snippetsプラグインに、以下のようなREST APIを制限するコードがないか確認してください。

// このようなコードがあれば削除またはコメントアウト
add_filter('rest_authentication_errors', function($result) {
    if (!is_user_logged_in()) {
        return new WP_Error('rest_forbidden', 'REST API restricted', array('status' => 401));
    }
    return $result;
});

サーバーのWAF設定

レンタルサーバーによっては、WAF(Web Application Firewall)がREST APIをブロックしている場合があります。サーバーの管理画面でWAF設定を確認してください。

設定変更後の確認

設定を変更した後は、以下の手順でエラーが解消されたか確認してください。

  1. キャッシュをクリア
    • WP Rocketなどのキャッシュプラグインを使用している場合、キャッシュをクリア
  2. ブラウザをリロード
    • Ctrl + Shift + R(Windows)または Cmd + Shift + R(Mac)で強制リロード
  3. コンソールを確認
    • ブラウザの開発者ツール(F12)でコンソールを開き、エラーが消えているか確認

REST APIが動作しているか確認する方法

REST APIが正常に動作しているかテストするには、ブラウザで以下のURLにアクセスしてください。

https://あなたのサイト/wp-json/wp/v2/
  • 正常:JSON形式のデータが表示される
  • 異常:エラーメッセージや空白ページが表示される

まとめ

SWELLの「swell-ct-pv」401エラーは、セキュリティ系・パフォーマンス系プラグインがREST APIをブロックしていることが原因です。

確認すべきプラグイン:

プラグイン確認場所
PerfmattersOptions → Disable REST API
XO Security設定 → REST API
SiteGuardSiteGuard → REST API
WordfenceFirewall → Advanced Options

REST APIはWordPressの重要な機能なので、完全に無効化するよりも、必要なエンドポイントだけを許可する設定がおすすめです。

  • URLをコピーしました!

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressのエラー・不具合対応のサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次