Debug là công việc không thể thiếu đối với lập trình viên. Với mỗi người và mỗi ngôn ngữ khác nhau, sẽ có những cách debug khác nhau. Ngoài sử dụng các công cụ (tool) hỗ trợ debug, thì dùng những hàm mà ngôn ngữ đó hỗ trợ để in lỗi ra màn hình.
Khi bước vào lập trình trên CMS WordPress, có thể là plugin hoặc theme, các bạn gặp khó khăn trong quá trình debug. Thông thường echo rồi var_dump hay print_r các kiểu các thể loại mà chẳng thấy nó hiện ra.
Tuy nhiên, WordPress không kích hoạt chức năng debug. Vậy nên khó khăn xảy ra với những người mới làm quen với WordPress. Chương trình vẫn chạy mà lỗi thì cũng chẳng thấy hiện ra nhưng vấn đề là nó lại không chạy theo ý mình. Chúng tôi xin giới thiệu vài cách để debug khi bạn lập trình plugin hay theme cho WordPress nhé.
Debug là gì?
Debug – Debugging là việc xác định, tiến hành sửa lỗi (fix bugs). Đây là bước cuối cùng của quá trình kiểm nghiệm chức năng một phần mềm hay website.
Các tester thực hiện kiểm tra chức năng và chỉ ra đoạn code chưa chuẩn xác. Từ đó đảm bảo không có sự cố không mong muốn có khả năng xảy ra khi vận hành.
Đây là nhiệm vụ mà các lập trình viên với các công cụ để debug chuyên dụng. Quá trình này không thể không triển khai trong giai đoạn phát triển phần mềm, ứng dụng hay website. Và khi vận hành ứng dụng hay website mà phát sinh lỗi. Chúng ta cũng dùng giải pháp debug để tìm kiếm và fix lỗi.
Ý nghĩa quá trình WordPress Debug là gì?
WordPress Debug hay WP_DEBUG là hằng số trong ngôn ngữ lập trình PHP kích hoạt chế độ debug trong WordPress. Hằng số này bạn tìm thấy nó trong file wp-config.php. Chế độ mặc định ban đầu thường tắt nhưng bạn có thể bật lên khi cần thiết. Do đó, những ý nghĩa của quá trình WordPress Debug là gì:
- Chế độ WP_DEBUG cung cấp thông tin các vấn đề. Chế độ thực hiện sẽ lưu file log, file log sẽ ghi lại tất cả các hoạt động xảy ra trên trang web. Từ đó các lập trình viên có thể khắc phục vấn đề.
- WordPress Debug (WP_DEBUG) sẽ hiển thị các chức năng bị lỗi thời trong theme WordPress hoặc trong plugin. Những chức năng được đánh dấu là không hoạt động trong tương lai. Các thông báo này giúp bạn nên sử dụng các chức năng khác để thay thế.
- Hơn nữa, khi bạn xây dựng theme hoặc plugin bạn cần bật WP_Debug. WordPress Codex khuyến nghị các nhà phát triển nên sử dụng WP_DEBUG khi tạo sản phẩm. Để khi gặp vấn đề hoặc cảnh báo, nhà phát triển khác kiểm tra và sửa code.
- Khi phát triển plugin hoặc theme, nếu không tương thích với WP_DEBUG. Thư viện WordPress chính thức sẽ không xác nhận plugin hoặc theme của bạn phát triển.
Thực hiện WordPress Debug trong khi lập trình
WP_DEBUG
Hàm WP_DEBUG nằm trong file wp-config.php và giá trị mặc định là “false”. Nếu bạn kích hoạt, bạn phải đổi thành “true”. Để làm vậy, bạn sẽ cần FTP client, hoặc file manager để truy cập file.
Trong ví dụ, chúng tôi sẽ sử dụng File Manager webaoe.com.
i) Tìm file wp-config.php trong thư mục root của trang web. Trong ví dụ của chúng tôi, nó nằm trong filemanager/webaoe.com/wp-config.php.
ii) Mở file và tìm
define( 'WP_DEBUG', false )
define( 'WP_DEBUG', true )
iii) Sau khi xác định được vị trí, đổi false thành true. Sau đó, lưu file.
Nếu không có code như vậy trong file wp-config.php, bạn có thể thêm ở trên nó dòng.
Hãy nhớ rằng không nên bật debug trong trang web đang chạy vì chế độ này được thiết kế cho mục đích phát triển.
Sau đó thông báo lỗi có thể hiện ra, hoặc có thể không thấy có. Nên bạn kết hợp với những cách sau để xem trường hợp không có thông báo.
WP_DEBUG_LOG
Để sử dụng tính năng WP_DEBUG_LOG, bạn hãy thêm dòng sau đây vào file wp-config.php.
define('WP_DEBUG_LOG', true);
Sau khi được kích hoạt chức năng WP_DEBUG, mỗi khi có lỗi. Những lỗi đó sẽ được ghi vào một file log theo đường dẫn sau: /wp-content/debug.log. Khi đó bạn sẽ biết rõ cụ thể lỗi là gì và thật dễ dàng để fix bug.
Ngoài ra khi bật WP_DEBUG_LOG rồi mà vẫn không thấy xuất hiện log (khi chạy bị lỗi). Bạn nên kiểm tra lại quyền của thư mục wp-content. Khi không có quyền create file nên nó không thể tạo file debug.log. Khi đó log sẽ được ghi vào file /var/log/httpd/error_log. Hãy cấp quyền để nó tạo file và ghi log cho bạn theo đường dẫn /wp-content/debug.log.
WP_DEBUG_DISPLAY
Bạn nên vô hiệu hóa WP_DEBUG_DISPLAY để thông báo lỗi WordPress Debug không hiển thị trên trang web.
Khi bạn chỉ muốn ghi lại log khi bị lỗi, mà không muốn nó hiển thị trên trang web. Bạn đổi giá trị đầu là “true” thành “false” để ẩn tất cả lỗi (WE_DEBUG_LOG).
SAVEQUERIES
Ngoài ra, bạn có thể debug với các truy vấn trong cơ sở dữ liệu. Nếu bạn đang khắc phục sự cố và các vấn đề về hiệu suất. Nạn muốn kiểm tra chính xác những truy vấn nào đang chạy thì dán biến dưới đây vào file wp-config.php
define( 'SAVEQUERIES', true);
Khi bật tùy chọn này, tất cả các truy vấn sẽ được lưu trong biến toàn cục $wpdb->queries. Bạn có thể thêm đoạn code PHP sau vào một tệp trong WordPress và xem kết quả.
<?php
global $wpdb;
print_r( $wpdb->queries );
?>
Kết luận
Để bật debug bạn thêm các hằng số sau vào file wp-config.php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true);
define( 'WP_DEBUG_DISPLAY', true);
define( 'SAVEQUERIES', true);
Xin cảm ơn các Anh/Chị đã tham khảo bài viết Debug của Webaoe. Nếu có chỗ nào còn thiếu sót, xin các Anh/Chị góp ý ở phía dưới để hoàn thiện bài viết hơn.