Jeśli otrzymasz następującą wiadomość, prawdopodobnie Twoja witryna nie będzie działać poprawnie:
Twoja witryna wydaje się blokować interfejs ajax WordPress. Może to powodować problemy z Twoim sklepem.
Plik
admin-ajax.php jest używany przez Easy Digital Downloads i wiele innych wtyczek do wykonywania typowych akcji w Twoim sklepie, takich jak stosowanie kodu rabatowego, walidacja płatności, finalizacja zakupu. Jest to bardzo ważny plik. Jeśli jest niedostępny, jest bardzo prawdopodobne, że Twój sklep nie będzie działał zgodnie z oczekiwaniami.
Użyj poniższych sugestii, aby pomóc zidentyfikować problem i go rozwiązać.
Konflikty wtyczek
Niektóre wtyczki celowo blokują dostęp do
admin-ajax.php. Odpowiedzialne za to są często następujące typy wtyczek:
- Wtyczki zabezpieczeń. Te wtyczki często mają ustawienie, które wyłącza admin-ajax.php, lub podobne ustawienie blokujące dostęp do plików administracyjnych.
- Wtyczki wyłączające dostęp do /wp-admin/ dla osób niebędących administratorami.
- Wtyczki minifikacji. Te wtyczki zapewniają poprawę wydajności poprzez zmniejszanie rozmiaru plików javascript (i innych). Ten proces często psuje javascript w Easy Digital Downloads, który jest odpowiedzialny za komunikację z admin-ajax.php
- Wtyczki buforowania. Czasami wtyczki buforowania mogą powodować problemy z admin-ajax.php poprzez uszkodzenie javascriptu tworzącego żądania ajax lub po prostu poprzez uniemożliwienie dostępu do admin-ajax.php
Jeśli ajax nie działa w Twojej witrynie i masz jakąkolwiek wtyczkę pasującą do powyższych opisów, spróbuj ją dezaktywować, a następnie przetestuj, czy
admin-ajax.php ponownie staje się dostępny. Jeśli tak, możesz nadal używać wtyczki, wystarczy znaleźć problematyczne ustawienie w wtyczce i je wyłączyć.
Firewalle hostingu
Czasami firmy hostingowe konfigurują firewall na Twojej witrynie, który ma na celu jej ochronę, ale ma również niekorzystny skutek blokowania dostępu do
admin-ajax.php. Jeśli masz problemy z ajax, sprawdź, czy Twój hosting ma firewall i go wyłącz. Jeśli ajax zacznie działać po wyłączeniu firewalla, znalazłeś winowajcę. Jeśli ajax jest nadal niedostępny po wyłączeniu firewalla, zazwyczaj możesz go bezpiecznie ponownie włączyć.
Reguły w Twoim pliku .htaccess
Plik
.htaccess używany na serwerach Apache może czasami zawierać specjalne reguły zaprojektowane do ochrony Twojej witryny przed atakami. Czasami te reguły są stosowane zbyt ogólnie i nieumyślnie wyłączają dostęp do admin-ajax.php. Jeśli Twój ajax nie działa, sprawdź, jakie reguły zawiera Twój plik .htaccess. Jeśli istnieją jakiekolwiek reguły poza tymi pokazanymi poniżej, usuń je i sprawdź, czy ajax zacznie działać ponownie.
Twój plik
.htaccesszazwyczaj zawiera reguły wyglądające tak (są one doskonale bezpieczne i normalne):
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Problemy między domenami
admin-ajax.php musi być uruchomiony w tej samej domenie, z której jest wywoływany. Przykład: jeśli Twoja witryna to
https://www.example.com, a próbujesz wywołać https://example.com/wp-admin/admin-ajax.php, to nie zadziała. Zwróć uwagę na www w pierwszym adresie URL i brak www w drugim.
Dotyczy to również niezgodności protokołu SSL. https://www.example.com/wp-admin/admin-ajax.php nie może wywołać https://www.example.com/wp-admin/admin-ajax.php. Zwróć uwagę na https w pierwszym adresie URL i brak https w drugim.
