Khắc phục lỗi admin-ajax 400 trong WordPress
Khắc phục lỗi admin-ajax 400 trong WordPress: Hướng dẫn chi tiết
Lỗi admin-ajax 400 là một trong những lỗi khó chịu mà người dùng WordPress có thể gặp phải. Lỗi này thường xuất hiện khi WordPress không thể giao tiếp chính xác với máy chủ thông qua file admin-ajax.php. Điều này có thể dẫn đến nhiều vấn đề, từ việc không thể lưu thay đổi trong trình soạn thảo Gutenberg đến việc các plugin không hoạt động đúng cách. Bài viết này sẽ cung cấp một hướng dẫn chi tiết về cách khắc phục lỗi admin-ajax 400 trong WordPress.
Hiểu rõ về admin-ajax.php và Lỗi 400
admin-ajax.php là một file cốt lõi của WordPress đóng vai trò quan trọng trong việc xử lý các yêu cầu AJAX (Asynchronous JavaScript and XML). AJAX cho phép các đoạn mã JavaScript trên trang web của bạn gửi và nhận dữ liệu từ máy chủ mà không cần tải lại toàn bộ trang. Điều này cải thiện trải nghiệm người dùng và cho phép các tương tác động trên trang web.
Lỗi 400 (Bad Request) xảy ra khi máy chủ nhận được một yêu cầu mà nó không thể hiểu hoặc xử lý. Trong ngữ cảnh của WordPress, lỗi này thường chỉ ra rằng có vấn đề với dữ liệu mà trình duyệt gửi đến admin-ajax.php. Nguyên nhân có thể bao gồm:
- Dữ liệu yêu cầu bị hỏng hoặc không hợp lệ.
- URL của
admin-ajax.phpbị sai lệch. - Plugin hoặc theme xung đột.
- Vấn đề với cấu hình máy chủ.
Các bước chẩn đoán lỗi admin-ajax 400
Trước khi bắt đầu sửa lỗi, điều quan trọng là phải xác định nguyên nhân gây ra lỗi. Dưới đây là một số bước bạn có thể thực hiện để chẩn đoán lỗi:
- Kiểm tra Console của trình duyệt: Mở công cụ phát triển (Developer Tools) của trình duyệt (thường bằng cách nhấn F12) và chuyển đến tab “Console”. Quan sát xem có thông báo lỗi nào liên quan đến
admin-ajax.phpkhông. Các thông báo này thường cung cấp thông tin chi tiết về nguyên nhân gây ra lỗi. - Tắt Plugin: Vô hiệu hóa tất cả các plugin của bạn và kiểm tra xem lỗi có biến mất không. Nếu lỗi biến mất, hãy kích hoạt lại từng plugin một để xác định plugin nào gây ra sự cố.
- Chuyển sang Theme mặc định: Tạm thời chuyển sang một theme mặc định của WordPress (ví dụ: Twenty Twenty-Three) để xem liệu theme có phải là nguyên nhân gây ra lỗi không.
- Kiểm tra file .htaccess: File
.htaccesscó thể chứa các quy tắc gây cản trở các yêu cầu AJAX. Hãy thử đổi tên file.htaccessthành.htaccess_oldvà xem lỗi có được giải quyết không. Nếu có, hãy tạo một file.htaccessmới bằng cách truy cập vào “Settings” -> “Permalinks” và nhấn “Save Changes”. - Kiểm tra Log máy chủ: Kiểm tra các file log của máy chủ của bạn để tìm bất kỳ thông báo lỗi nào liên quan đến
admin-ajax.php.
Các phương pháp khắc phục lỗi admin-ajax 400
Sau khi đã chẩn đoán được lỗi, bạn có thể áp dụng các phương pháp khắc phục sau:
1. Kiểm tra và Sửa đổi URL của admin-ajax.php
Đôi khi, URL của admin-ajax.php có thể bị sai lệch do các cấu hình không chính xác. Đảm bảo rằng URL chính xác được sử dụng trong các yêu cầu AJAX.
Bạn có thể kiểm tra URL bằng cách mở file wp-config.php và tìm dòng define('WP_SITEURL', 'your-website-url'); và define('WP_HOME', 'your-website-url');. Đảm bảo rằng các URL này chính xác và trỏ đến đúng địa chỉ trang web của bạn.
Ngoài ra, bạn có thể sử dụng code snippet sau để đảm bảo URL của admin-ajax.php được sử dụng chính xác:
<?php
add_action('wp_head', 'my_ajaxurl');
function my_ajaxurl() {
echo '<script type="text/javascript">'."n";
echo 'var ajaxurl = "'.admin_url('admin-ajax.php').'";'."n";
echo '</script>'."n";
}
?>
Thêm đoạn code này vào file functions.php của theme của bạn (hoặc sử dụng một plugin như Code Snippets). Đoạn code này sẽ định nghĩa biến JavaScript ajaxurl, chứa URL chính xác của admin-ajax.php.
2. Giải quyết xung đột Plugin và Theme
Như đã đề cập ở trên, xung đột giữa các plugin hoặc giữa theme và plugin có thể gây ra lỗi admin-ajax 400. Để giải quyết vấn đề này, hãy:
- Vô hiệu hóa tất cả các plugin và kích hoạt lại từng plugin một, kiểm tra sau mỗi lần kích hoạt để xem lỗi có xuất hiện trở lại không.
- Chuyển sang một theme mặc định của WordPress để xem liệu theme có gây ra lỗi không.
- Cập nhật tất cả các plugin và theme của bạn lên phiên bản mới nhất.
Nếu bạn xác định được một plugin gây ra lỗi, hãy liên hệ với nhà phát triển plugin để được hỗ trợ hoặc tìm một plugin thay thế.
3. Kiểm tra và Tối ưu hóa file .htaccess
File .htaccess có thể chứa các quy tắc gây cản trở các yêu cầu AJAX. Hãy kiểm tra file này để đảm bảo rằng không có quy tắc nào chặn các yêu cầu đến admin-ajax.php.
Bạn có thể sử dụng code snippet sau để thêm vào file .htaccess để cho phép truy cập vào admin-ajax.php:
<Files admin-ajax.php>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</Files>
Tuy nhiên, hãy cẩn thận khi chỉnh sửa file .htaccess vì một lỗi nhỏ có thể làm hỏng trang web của bạn. Luôn tạo bản sao lưu trước khi thực hiện bất kỳ thay đổi nào.
4. Tăng giới hạn bộ nhớ PHP
Đôi khi, lỗi admin-ajax 400 có thể xảy ra do WordPress không có đủ bộ nhớ để xử lý các yêu cầu AJAX. Bạn có thể tăng giới hạn bộ nhớ PHP bằng cách thêm các dòng sau vào file wp-config.php:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
Bạn cũng có thể tăng giới hạn bộ nhớ PHP trong file php.ini của máy chủ của bạn. Liên hệ với nhà cung cấp dịch vụ hosting của bạn để được hỗ trợ nếu bạn không biết cách thực hiện việc này.
5. Kiểm tra và Sửa lỗi CORS (Cross-Origin Resource Sharing)
Lỗi CORS xảy ra khi một trang web cố gắng truy cập tài nguyên từ một domain khác. Điều này có thể gây ra lỗi admin-ajax 400 nếu trang web của bạn đang cố gắng thực hiện các yêu cầu AJAX đến một domain khác.
Để giải quyết vấn đề này, bạn cần cấu hình máy chủ của bạn để cho phép CORS. Bạn có thể thực hiện việc này bằng cách thêm các header sau vào response của máy chủ:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Lưu ý rằng việc sử dụng Access-Control-Allow-Origin: * cho phép truy cập từ bất kỳ domain nào, vì vậy bạn nên sử dụng một domain cụ thể thay vì dấu hoa thị nếu có thể.
6. Kiểm tra các hàm PHP bị vô hiệu hóa
Một số nhà cung cấp hosting có thể vô hiệu hóa một số hàm PHP vì lý do bảo mật. Nếu một trong những hàm này được sử dụng bởi WordPress hoặc một plugin, nó có thể gây ra lỗi admin-ajax 400.
Kiểm tra với nhà cung cấp hosting của bạn để xem có hàm PHP nào bị vô hiệu hóa không. Nếu có, hãy yêu cầu họ kích hoạt lại các hàm cần thiết.
7. Sử dụng Debugging Tools
WordPress cung cấp các công cụ gỡ lỗi (debugging tools) có thể giúp bạn xác định nguyên nhân gây ra lỗi admin-ajax 400. Bạn có thể bật chế độ debug bằng cách thêm dòng sau vào file wp-config.php:
define( 'WP_DEBUG', true );
Khi chế độ debug được bật, WordPress sẽ hiển thị các thông báo lỗi và cảnh báo có thể giúp bạn xác định nguyên nhân gây ra lỗi.
Kết luận
Lỗi admin-ajax 400 có thể gây ra nhiều rắc rối cho người dùng WordPress, nhưng bằng cách làm theo các bước chẩn đoán và khắc phục được nêu trong bài viết này, bạn có thể giải quyết vấn đề một cách hiệu quả. Điều quan trọng là phải xác định nguyên nhân gây ra lỗi và áp dụng các phương pháp khắc phục phù hợp. Nếu bạn gặp khó khăn, hãy liên hệ với nhà cung cấp dịch vụ hosting của bạn hoặc tìm kiếm sự giúp đỡ từ cộng đồng WordPress.
- Khắc phục lỗi xử lý ảnh thất bại WordPress
- Ngăn thông tin cá nhân xuất hiện trong Google Analytics
- Khắc phục lỗi missing theme customizer WordPress
- 7 cách sửa lỗi 401 trong WordPress
- Lỗi WordPress phổ biến và cách sửa
- Khắc phục lỗi JSON không hợp lệ trong WordPress
- Khắc phục lỗi “Technical Difficulties” WordPress
