Lỗi “WordPress headers already sent” là một trong những lỗi phổ biến nhất mà người dùng WordPress gặp phải, đặc biệt khi họ mới bắt đầu chỉnh sửa file theme hoặc plugin. Lỗi này thường xuất hiện dưới dạng một thông báo cảnh báo màu vàng hoặc đỏ trên trang web, kèm theo đường dẫn file và số dòng cụ thể. Hiểu rõ nguyên nhân và cách khắc phục lỗi này sẽ giúp bạn duy trì website hoạt động ổn định, tránh gián đoạn trải nghiệm người dùng và mất thứ hạng SEO.
Lỗi “WordPress Headers Already Sent” là gì?

Lỗi “headers already sent” xảy ra khi WordPress cố gắng gửi thông tin header HTTP sau khi dữ liệu đầu ra (output) đã được gửi đến trình duyệt. Trong kiến trúc của WordPress, header chứa các thông tin quan trọng như cookie, session, và chuyển hướng. Khi có bất kỳ ký tự khoảng trắng, dòng trống, hoặc nội dung HTML nào được xuất ra trước khi WordPress gửi header, hệ thống sẽ báo lỗi.
Bản chất kỹ thuật của lỗi
HTTP header phải được gửi trước bất kỳ nội dung nào khác. Nếu file PHP có khoảng trắng hoặc ký tự xuất dòng trước thẻ <?php hoặc sau thẻ ?>, PHP sẽ tự động gửi output buffer, khiến header không thể gửi sau đó. WordPress sử dụng hàm wp_redirect() và các hàm cookie dựa trên cơ chế này, do đó bất kỳ vi phạm nào cũng gây ra lỗi.
Nguyên nhân chính gây ra lỗi “WordPress Headers Already Sent”
Có nhiều nguyên nhân dẫn đến lỗi này, nhưng hầu hết đều liên quan đến việc xuất dữ liệu không kiểm soát trước khi header được gửi. php: Đây là nguyên nhân số một. Nhiều người dùng vô tình thêm khoảng trắng trước thẻ <?php hoặc sau thẻ ?> đóng.
- Ký tự BOM (Byte Order Mark) trong file: Khi lưu file PHP với mã hóa UTF-8 có BOM, một ký tự ẩn được thêm vào đầu file, gây ra lỗi.
- Lỗi từ plugin hoặc theme: Plugin hoặc theme kém chất lượng có thể chứa code xuất dữ liệu sớm.
- Sử dụng hàm
header()không đúng cách: Gọi hàmheader()sau khi đã có output. - Lỗi cấu hình PHP: Cài đặt
output_bufferingtrong php.ini không phù hợp.
Phân loại lỗi “WordPress Headers Already Sent”

Lỗi này có thể xuất hiện dưới nhiều dạng khác nhau, tùy thuộc vào ngữ cảnh và mức độ nghiêm trọng:
| Loại lỗi | Mô tả | Ví dụ thông báo |
|---|---|---|
| Cảnh báo (Warning) | Thông báo màu vàng, không làm gián đoạn hoàn toàn trang web nhưng gây rối giao diện | Warning: Cannot modify header information – headers already sent by (output started at…) |
| Lỗi nghiêm trọng (Fatal Error) | Trang web trắng hoàn toàn, không hiển thị nội dung | Fatal error: Cannot redeclare function… hoặc headers already sent |
| Lỗi chuyển hướng | Chức năng chuyển hướng không hoạt động, người dùng bị mắc kẹt | Headers already sent, cannot redirect |
Hướng dẫn chi tiết cách sửa lỗi “WordPress Headers Already Sent”
Quy trình sửa lỗi cần được thực hiện tuần tự từ đơn giản đến phức tạp. Ví dụ: “headers already sent by (output started at /wp-content/themes/your-theme/functions.php:12)”. Ghi lại thông tin này để biết chính xác nơi cần sửa.
Bước 2: Kiểm tra và xóa khoảng trắng trong file
Sử dụng FTP hoặc File Manager trong hosting để truy cập file được chỉ định. Mở file bằng trình soạn thảo văn bản thuần túy (Notepad++, Sublime Text, hoặc VS Code). Kiểm tra kỹ:
- Không có khoảng trắng hoặc dòng trống trước thẻ
<?phpở đầu file. - Không có khoảng trắng hoặc dòng trống sau thẻ
?>nếu file kết thúc bằng thẻ đóng. - Nếu file không có thẻ đóng
?>ở cuối, hãy giữ nguyên như vậy (đây là cách viết PHP chuẩn).
Bước 3: Xóa ký tự BOM trong file
Ký tự BOM là ký tự ẩn không nhìn thấy bằng mắt thường. Để kiểm tra và xóa BOM:
- Dùng Notepad++: Mở file, chọn Encoding > Encode in UTF-8 without BOM.
- Dùng công cụ trực tuyến: Upload file lên các trang web kiểm tra BOM miễn phí.
- Sử dụng plugin WordPress: Plugin “Remove BOM” có thể quét và xóa BOM toàn bộ website.
Bước 4: Kiểm tra file functions.php của theme
File functions.php là thủ phạm thường xuyên nhất. Mở file này và kiểm tra:
- Đảm bảo thẻ
<?phplà ký tự đầu tiên của file, không có khoảng trắng trước đó. - Nếu file kết thúc bằng
?>, hãy xóa thẻ đóng này hoặc đảm bảo không có ký tự nào sau nó. - Kiểm tra các hàm hook như
add_action('init',...)hoặcadd_filter(...)có gọi hàm xuất dữ liệu không.
Bước 5: Tắt plugin hoặc theme để xác định xung đột
Nếu lỗi vẫn còn, hãy tạm thời vô hiệu hóa tất cả plugin. Đổi tên thư mục plugins trong wp-content thành plugins_old để tắt toàn bộ. Nếu hết lỗi, kích hoạt từng plugin một để tìm ra plugin gây lỗi. Tương tự, chuyển về theme mặc định (Twenty Twenty-Four) để kiểm tra theme.
Bước 6: Sử dụng output buffering trong PHP
Thêm đoạn code sau vào đầu file wp-config.php (sau dòng <?php đầu tiên) để bật output buffering:
ob_start();
Lưu ý: Đây là giải pháp tạm thời, không giải quyết triệt để nguyên nhân gốc. Chỉ dùng khi cần khôi phục website gấp.
So sánh các phương pháp sửa lỗi

| Phương pháp | Ưu điểm | Nhược điểm | Hiệu quả lâu dài |
|---|---|---|---|
| Xóa khoảng trắng thủ công | Đơn giản, nhanh chóng | Khó phát hiện nếu nhiều file | Cao nếu xác định đúng file |
| Xóa ký tự BOM | Giải quyết lỗi ẩn | Cần công cụ hỗ trợ | Cao |
| Tắt plugin/theme | Xác định chính xác nguyên nhân | Mất thời gian nếu nhiều plugin | Cao |
| Output buffering | Khắc phục tạm thời nhanh | Không giải quyết gốc, ảnh hưởng hiệu năng | Thấp |
Sai lầm thường gặp khi sửa lỗi “WordPress Headers Already Sent”
Nhiều người dùng mắc phải những sai lầm khiến lỗi trở nên nghiêm trọng hơn:
- Chỉnh sửa file trực tiếp trên hosting mà không backup: Một sai sót nhỏ có thể làm hỏng toàn bộ website.
- Thêm ob_start() vào sai vị trí: Đặt ob_start() sau khi đã có output sẽ vô tác dụng.
- Bỏ qua thông báo lỗi chi tiết: Không đọc kỹ đường dẫn file và số dòng dẫn đến sửa sai chỗ.
- Sử dụng trình soạn thảo văn bản có định dạng: Word, Google Docs thêm ký tự ẩn vào file PHP.
- Không kiểm tra file wp-config.php: File này cũng có thể bị lỗi tương tự.
Lưu ý quan trọng khi xử lý lỗi

Để tránh lặp lại lỗi “WordPress headers already sent” trong tương lai, hãy tuân thủ các nguyên tắc sau:
- Luôn sao lưu file trước khi chỉnh sửa.
- Sử dụng child theme khi muốn thay đổi code theme cha.
- Kiểm tra code trên môi trường staging trước khi áp dụng lên website thật.
- Cập nhật WordPress, theme và plugin thường xuyên để vá lỗi.
- Sử dụng plugin bảo mật và tối ưu như Wordfence, W3 Total Cache để giảm thiểu rủi ro.
Câu hỏi thường gặp về lỗi “WordPress Headers Already Sent”
Lỗi “headers already sent” có làm mất dữ liệu không?
Lỗi này không làm mất dữ liệu trong database. Nó chỉ ảnh hưởng đến khả năng hiển thị trang web và chức năng chuyển hướng. Dữ liệu bài viết, người dùng vẫn an toàn.
Tại sao lỗi xuất hiện sau khi cập nhật plugin?
Plugin mới có thể chứa code không tương thích hoặc xung đột với theme hiện tại. Việc cập nhật đôi khi làm thay đổi cấu trúc file, gây ra khoảng trắng hoặc lỗi output.
Có thể sửa lỗi mà không cần truy cập FTP không?
Có thể sử dụng File Manager trong cPanel hoặc plugin quản lý file như WP File Manager để chỉnh sửa trực tiếp từ dashboard WordPress. Tuy nhiên, nếu lỗi làm trang web trắng, bạn cần FTP hoặc công cụ của hosting.
Lỗi này có ảnh hưởng đến SEO không?
Có. Nếu lỗi hiển thị cảnh báo trên trang, Google có thể đánh giá trải nghiệm người dùng kém. Trang web bị trắng hoàn toàn sẽ mất thứ hạng nhanh chóng do không thể crawl.
Output buffering có phải giải pháp vĩnh viễn không?
Không. Output buffering chỉ là giải pháp tạm thời. Nó che giấu lỗi nhưng không giải quyết nguyên nhân gốc, có thể gây ra vấn đề hiệu năng và bảo mật về lâu dài.
Kết luận

Lỗi “WordPress headers already sent” tuy gây khó chịu nhưng hoàn toàn có thể khắc phục nếu bạn hiểu rõ nguyên nhân và áp dụng đúng quy trình. Bắt đầu bằng việc xác định file và dòng lỗi từ thông báo, kiểm tra khoảng trắng và ký tự BOM, sau đó kiểm tra xung đột plugin hoặc theme. Luôn sao lưu dữ liệu trước khi thực hiện bất kỳ thay đổi nào. Với các bước hướng dẫn chi tiết trong bài viết, bạn có thể tự tin xử lý lỗi này một cách dứt điểm, đảm bảo website WordPress hoạt động ổn định và thân thiện với SEO.
- WordPress Website Loading Forever: Nguyên Nhân Và Cách Khắc Phục Triệt Để
- Elementor hoạt động như thế nào? Giải mã cơ chế tạo trang web chuyên nghiệp không cần code
- Elementor là gì? Hướng dẫn toàn diện từ A-Z cho người mới bắt đầu
- WordPress Security Token Error: Nguyên Nhân, Cách Khắc Phục và Phòng Ngừa Toàn Diện
- Theme WordPress Thương Mại Là Gì? Hướng Dẫn Chọn Giao Diện Bán Hàng Chuyên Nghiệp














