WordPress: Cách debug để phát hiện lỗi email
Bạn đã từng gặp vấn đề với việc gửi thư từ trang WordPress của mình chưa có lý do rõ ràng chưa? Nó thực sự khó gỡ lỗi WP mail vì nó chỉ trả về true hoặc false tùy thuộc vào kết quả của hàm.
Gần đây tôi đã có vấn đề tương tự và nó đã cho tôi một thời gian để đào thông qua các mã lõi WordPress và cố gắng để có được những gì là lỗi thực tế và thực tế gỡ lỗi thư WP khi cố gắng gửi email.
Tôi đang viết một giải pháp ở đây, vì vậy lần sau bạn có những vấn đề này, bạn sẽ nhận được thông báo lỗi sớm hơn và tôi hy vọng nó sẽ giúp bạn tiết kiệm thời gian.
Chuẩn Bị
Trước khi bắt đầu gỡ lỗi, bạn cần thiết lập WordPress để ghi các thông báo lỗi vào nhật ký lỗi, thay vì trên màn hình.
Để làm điều đó, hãy mở tệp wp-config.php của bạn và đặt nó vào:
/** * This will log all errors notices and warnings to a file called debug.log in * wp-content (If Apache does not have write permission, you may need to create * the file first and set the appropriate permissions (i.e. use 660) ) */ define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false);
Bây giờ, tất cả các lỗi, cảnh báo và thông báo sẽ được ghi vào tệp debug.log sẽ nằm trong thư mục wp-content của bạn.
Nếu bạn muốn có thêm thủ thuật từ tệp wp-config.php, bạn có thể vào phần Chỉnh sửa cài đặt wp-config.
Để kiểm tra, bạn có thể thêm mã này vào đâu đó trong tệp functions.php:
error_log('Kiểm tra wp log');
Văn bản ở trên sẽ hiển thị khi bạn làm mới trang của mình bên trong tệp debug.log trong thư mục wp-content.
Hãy đảm bảo đặt WP_DEBUG thành false sau khi thử nghiệm xong.
Debug WP Mail từ phiên bản WP 4.4 trở về sau
WordPress đã thêm một hook nhỏ tiện dụng trong phiên bản 4.4 có tên là wp_mail_failed.
Chỉ cần thêm mã này vào tệp functions.php hoặc plugin của bạn:
// define the wp_mail_failed callback function action_wp_mail_failed($wp_error) { return error_log(print_r($wp_error, true)); } // add the action add_action('wp_mail_failed', 'action_wp_mail_failed', 10, 1);
Thao tác này sẽ ghi lại tất cả thông tin về lỗi wp_mail, cũng như tất cả các tham số được sử dụng trong việc gửi email.
Debug WP Mail trong phiên bản WP nhỏ hơn 4.4
Nếu bạn đang sử dụng phiên bản WordPress cũ hơn 4.4, thêm mã sau đây để thực sự gỡ lỗi thư wp:
// your line which sends an email $result = wp_mail($sendto, $subject, $content, $headers); // wp mail debugging if (!$result) { global $ts_mail_errors; global $phpmailer; if (!isset($ts_mail_errors)) $ts_mail_errors = array(); if (isset($phpmailer)) { $ts_mail_errors[] = $phpmailer->ErrorInfo; } error_log(print_r($ts_mail_errors, true)); }
Ok, vậy là xong. bây giờ bạn chạy chức năng gửi mail của site và kiểm tra tập tin debug.log trong thư mục wp-content để xem kết quả. Và nhớ tắt debug khi đã kiểm tra xong nhé.