以下のメッセージが表示された場合、ストアが正常に機能しない可能性が高いです。
サイトがWordPressのAJAXインターフェースをブロックしているようです。これにより、ストアに問題が発生する可能性があります。
admin-ajax.php ファイルは、Easy Digital Downloadsやその他の多くのプラグインによって、ストアでの割引コードの適用、チェックアウトの検証、購入の完了などの一般的なアクションを実行するために使用されます。これは非常に重要なファイルです。アクセスできない場合、ストアが期待どおりに動作しない可能性が非常に高いです。
以下の提案を使用して、問題を特定し、解決してください。
プラグインの競合
一部のプラグインは、意図的にadmin-ajax.phpへのアクセスをブロックすることが知られています。以下のような種類のプラグインが原因であることがよくあります。
- セキュリティプラグイン。これらのプラグインには、admin-ajax.phpを無効にする設定や、管理ファイルへのアクセスをブロックする同様の設定が含まれていることがよくあります。
- 管理者以外のユーザーの/wp-admin/へのアクセスを無効にするプラグイン。
- ミニファイ(縮小化)プラグイン。これらのプラグインは、JavaScript(およびその他の)ファイルのサイズを縮小することでパフォーマンスの向上を謳っています。このプロセスにより、Easy Digital DownloadsのJavaScriptが壊れ、admin-ajax.phpとの通信に問題が発生することがよくあります。
- キャッシュプラグイン。キャッシュプラグインは、AJAXリクエストを作成するJavaScriptを破損したり、単にadmin-ajax.phpにアクセスできなくしたりすることで、admin-ajax.php で問題を引き起こすことがあります。
サイトでAJAXが機能しない場合、上記の説明に一致するプラグインがある場合は、プラグインを無効にして、admin-ajax.php に再度アクセスできるかどうかをテストしてみてください。アクセスできるようになった場合、プラグインを引き続き使用できる可能性がありますが、プラグイン内の問題のある設定を見つけて無効にする必要があります。
ホストファイアウォール
時折、ホスティング会社がサイトを保護するためにファイアウォールを設定しますが、それがadmin-ajax.phpへのアクセスをブロックするという逆効果をもたらすことがあります。AJAXに問題がある場合は、ホストにファイアウォールがあるかどうかを確認し、あれば無効にしてください。ファイアウォールを無効にした後にAJAXが機能し始めた場合は、原因が特定されたことになります。ファイアウォールを無効にしてもAJAXにアクセスできない場合は、通常は安全に再度有効にすることができます。
.htaccessファイル内のルール
Apacheサーバーで使用される.htaccessファイルには、サイトを攻撃から保護するために設計された特別なルールが含まれることがあります。これらのルールが一般的に適用されすぎると、意図せずにadmin-ajax.phpへのアクセスが無効になることがあります。AJAXが機能しない場合は、.htaccess ファイルに含まれるルールを確認してください。以下に示すもの以外のルールがある場合は、それらを削除して、AJAXが再び機能するかどうかを確認してください。
通常、.htaccessファイルには次のようなルールが含まれています(これらは完全に安全で正常です):
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
クロスドメインの問題
admin-ajax.php は、呼び出し元のドメインと同じドメインで実行する必要があります。例: サイトが
https://www.example.com で、https://example.com/wp-admin/admin-ajax.php を呼び出そうとすると、機能しません。最初の URL には www が含まれ、2 番目の URL には www が含まれていないことに注意してください。
これは SSL の不一致にも当てはまります。https://www.example.com/wp-admin/admin-ajax.php は https://www.example.com/wp-admin/admin-ajax.php を呼び出すことはできません。最初の URL の https と、2 番目の URL の https がないことに注意してください。
