Nội dung cốt lõi
[Mở rộng]- Tắt Emoji Scripts: Loại bỏ script không cần, giảm 1 HTTP request.
- Tối ưu Heartbeat API: Giảm tải server, kiểm soát AJAX requests hiệu quả.
- Giới hạn Post Revisions: Thu gọn database, tăng tốc truy vấn và sao lưu.
- Tắt XML-RPC: Ngăn chặn tấn công, loại bỏ giao thức cũ không dùng.
- Vô hiệu hóa Embeds: Xóa script nhúng nội dung ngoài không cần thiết.
- Tối ưu bằng Code: Giảm phụ thuộc plugin, tăng tốc bền vững cho website.
- Sao lưu trước chỉnh sửa: Bảo vệ website, tránh lỗi khi sửa file quan trọng.
Bạn có biết rằng WordPress mặc định tải rất nhiều tính năng mà website của bạn có thể không cần thiết phải dùng? Từ emoji scripts đến heartbeat API liên tục gửi request, những thứ này đang âm thầm làm chậm trang web của bạn mà bạn chẳng hề hay biết.
Thay vì cài đặt thêm plugin tối ưu (vốn lại càng làm tăng thêm gánh nặng), mình sẽ hướng dẫn bạn cách giảm request bằng những đoạn code đơn giản. Chỉ cần 10 phút copy-paste vào file functions.php, bạn sẽ thấy website của mình nhanh hơn một chút.
Tại sao nên giảm request WordPress?
Nhiều bạn thắc mắc: “Tại sao không dùng plugin cho nhanh?”. Câu trả lời rất đơn giản – mỗi plugin bạn cài thêm đều tạo ra:
- Thêm HTTP requests khi tải trang – đi ngược với cái chúng ta đang làm
- Tăng kích thước database do lưu trữ settings
- Xung đột tiềm ẩn với plugin hoặc theme khác
- Điểm yếu bảo mật nếu plugin không được cập nhật thường xuyên
Thực tế, trung bình một website WordPress có khoảng 15-20 plugins. Cứ mỗi plugin làm tăng thời gian tải khoảng 50-200ms.
Khi bạn tối ưu bằng code trực tiếp, bạn kiểm soát hoàn toàn những gì được chạy trên website. Không có bloatware, không có overhead không cần thiết.
Lưu ý: Giảm request rác không tạo ra sự khác biệt rõ ràng về mặt hiệu suất (kể cả khi đo bằng PageSpeed Insights/GTmetrix). Tuy nhiên, nó vẫn là một mắt xích nhỏ trong bài toán tăng tốc WordPress.
Bây giờ, mình sẽ hướng dẫn bạn 3 cách tối ưu WordPress cơ bản. Mỗi cách đều được giải thích rõ ràng về cách hoạt động và cách kiểm tra chi tiết.
1. Tắt Emoji scripts
WordPress tự động tải thư viện emoji script (wp-emoji-release.min.js) trên mọi trang để hiển thị emoji đúng cách trên các trình duyệt cũ. Vấn đề là: hầu hết trình duyệt hiện đại đã hỗ trợ emoji native rồi!
File JavaScript này nặng khoảng 22KB và tạo thêm 1 HTTP request không cần thiết. Với website có traffic cao, điều này ảnh hưởng đáng kể đến hiệu suất.
Hướng dẫn tắt Emoji WordPress:
Mở file functions.php của theme (hoặc child theme) và thêm đoạn code sau:
// Tắt emoji scripts
function disable_emojis() {
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
remove_filter('the_content_feed', 'wp_staticize_emoji');
remove_filter('comment_text_rss', 'wp_staticize_emoji');
remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
}
add_action('init', 'disable_emojis');
Giải thích code:
remove_action('wp_head', 'print_emoji_detection_script', 7)– Xóa script phát hiện emoji khỏi phần headerremove_action('wp_print_styles', 'print_emoji_styles')– Xóa CSS emoji- Các dòng
remove_filter– Ngăn WordPress chuyển đổi emoji trong content, comment và email
Cách kiểm tra kết quả:
- Truy cập vào bất kỳ trang nào trên website
- Bấm F12 để mở DevTools
- Chọn tab Network rồi bấm F5 để refresh trang
- Nếu không thấy
wp-emoji-release.min.jsthì tức là đã thành công
Bạn nên kiểm tra trước & sau khi thêm code để chắc chắn đoạn mã đã hoạt động.

Chắc sẽ có bạn thắc mắc tại sao không xoá hẳn file luôn mà phải dùng code để tắt? Lý do là khi cập nhật WordPress thì file nó sẽ xuất hiện lại > xoá lại > bất tiện, hơn nữa 22KB là con số không đáng kể với dung lượng hosting.
Tiếp theo, mình sẽ hướng dẫn bạn tối ưu một tính năng khác cũng tiêu tốn tài nguyên server không kém – đó là WordPress Heartbeat API.
2. Tối ưu Heartbeat API giảm tải server
WordPress Heartbeat API là tính năng cho phép trình duyệt giao tiếp với server thông qua AJAX requests. Nó được dùng để:
- Tự động lưu bài viết đang soạn thảo
- Thông báo khi có người khác đang chỉnh sửa cùng bài
- Hiển thị thông báo real-time trong dashboard
Vấn đề: Heartbeat gửi request mỗi 10 giây, gây tải lên server đặc biệt khi có nhiều người dùng đăng nhập cùng lúc. Với shared hosting giới hạn tài nguyên, đây là nguyên nhân khiến website bị “treo” định kỳ.
Hướng dẫn tối ưu Heartbeat
Thay vì tắt hoàn toàn (có thể ảnh hưởng chức năng autosave), mình khuyên bạn nên điều chỉnh tần suất:
/* 1. Tăng thời gian Autosave của Gutenberg lên 2 phút (mặc định 60s) */
add_filter('block_editor_settings_all', function($editor_settings) {
$editor_settings['autosaveInterval'] = 120;
return $editor_settings;
});
/* 2. Ép Heartbeat chạy chậm lại bằng JavaScript (Cưỡng chế mức Client-side) */
add_action('admin_enqueue_scripts', function($hook) {
if (!in_array($hook, array('post.php', 'post-new.php'))) {
return;
}
// Tiêm một đoạn JS nhỏ để ép Heartbeat không được chạy nhanh hơn 60s
$custom_js = "
jQuery(document).on('heartbeat-send', function(e, data) {
if (wp.heartbeat) {
wp.heartbeat.interval(60);
}
});
";
wp_add_inline_script('heartbeat', $custom_js);
}, 100);
/* 3. Chốt chặn cuối cùng ở Server-side */
add_filter('heartbeat_settings', function($settings) {
$settings['interval'] = 60;
return $settings;
}, 100);
// Tắt hoàn toàn ở Frontend
add_action('init', function() {
if (!is_admin()) {
wp_deregister_script('heartbeat');
}
}, 1);
Giải thích những gì sẽ thay đổi:
- Nâng autosave từ 60 giây lên 120 giây (chỉnh tại $editor_settings[‘autosaveInterval’] = 120)
- Ép biến
intervalcủa WordPress về lại 60 giây - Server từ chối interval < 60s, nếu client gửi
interval=10→ server vẫn trả 60 - Tắt hoàn toàn Heartbeat ở ngoài trang chủ/trang bài viết mà khách hàng xem
Cách kiểm tra kết quả:
- Mở DevTools (F12)
- Chọn tab Network > lọc Fetch/XHR
- Chọn admin-ajax.php > Payload
- Nếu dòng interval là 60 (hoặc trùng với giá trị bạn đặt) là code đã hoạt động

Sau khi đã tối ưu scripts và API requests, điều quan trọng tiếp theo là quản lý dữ liệu lưu trữ trong database. Và đây là lúc bạn cần giới hạn post revisions.
3. Giới hạn Post Revisions tối ưu database
Post Revisions là tính năng tự động lưu mọi phiên bản chỉnh sửa của bài viết. Tuy tiện lợi cho việc khôi phục nội dung, nhưng nó tạo ra vấn đề nghiêm trọng:
- Một bài viết có thể có 50-100+ revisions
- Mỗi revision chiếm dung lượng database như một bài viết hoàn chỉnh
- Database phình to, làm chậm queries và backup
Theo kinh nghiệm của mình, một website có 500 bài viết với trung bình 30 revisions/bài sẽ lãng phí khoảng 15.000 records trong database. Điều này làm tăng đáng kể thời gian query và kích thước backup.
Hướng dẫn giới hạn Revisions
Phương pháp 1: Sử dụng wp-config.php (Khuyên dùng)
Mở file wp-config.php (ở thư mục root WordPress) và thêm dòng này TRƯỚC dòng /* That's all, stop editing! */:
// Giới hạn revisions còn 3 phiên bản gần nhất
define('WP_POST_REVISIONS', 3);
Bạn có thể đổi số 3 thành số lượng revisions bạn muốn giữ lại. Mình khuyên nên để 3-5 revisions.
Phương pháp 2: Tắt hoàn toàn Revisions (Không khuyên dùng)
// Tắt hoàn toàn revisions
define('WP_POST_REVISIONS', false);
Lưu ý: Cách này sẽ khiến bạn không thể khôi phục phiên bản cũ của bài viết.
Dọn dẹp Revisions cũ
Đây là bước cần thiết sau khi đặt giới hạn, bạn cần xóa các revisions cũ đã tồn tại bằng cách chạy query SQL trong phpMyAdmin:
Vào phpMyAdmin → Chọn database cần dọn → Dán đoạn mã bên dưới → Ấn Go
DELETE FROM wp_posts WHERE post_type = 'revision';
Lưu ý: Các plugin tạo cache (như WP Rocket) có sẵn tính năng dọn revision. Hãy kiểm tra trước khi thực hiện cách phía trên.
Nếu bạn nhận được thông báo “X rows deleted …” như hình bên dưới là chúng ta đã xoá thành công revision dư thừa.

Kết quả đạt được:
- Database size giảm
- Tốc độ query nhanh hơn
- Backup nhanh hơn và nhẹ hơn
Ngoài 3 cách chính đã hướng dẫn, còn một số tối ưu bổ sung khác mà bạn có thể áp dụng để website chạy nhanh hơn nữa. Hãy cùng mình tìm hiểu thêm các tricks hữu ích này.
4. Các cách tối ưu bổ sung khác không cần plugin
Nếu bạn muốn đi xa hơn trong việc giảm request không sử dụng, đây là những tối ưu bổ sung mà mình thường áp dụng:
1. Tắt XML-RPC
XML-RPC là giao thức cũ cho phép kết nối WordPress từ các ứng dụng bên ngoài. Nó tạo request & thường bị lợi dụng để tấn công brute force.
// Tắt XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
Không nên tắt khi:
- Publish content từ automation tool như Make.com hay n8n
- Sử dụng plugin Jetpack (hoặc/và plugin tương tự)
- Sử dụng app WordPress trên mobile
2. Tắt Embeds và oEmbed
WordPress tự động tải scripts để nhúng nội dung từ YouTube, Twitter, v.v. Có thể tắt nếu bạn không dùng tính năng này:
function disable_wp_embeds() {
// Loại bỏ wp-embed script
wp_deregister_script('wp-embed');
// Loại bỏ oEmbed REST routes
remove_action('rest_api_init', 'wp_oembed_register_route');
// Tắt oEmbed discovery
add_filter('embed_oembed_discover', '__return_false');
// Loại bỏ oEmbed links
remove_action('wp_head', 'wp_oembed_add_discovery_links');
remove_action('wp_head', 'wp_oembed_add_host_js');
// Tắt embeds in content
remove_filter('the_content', array($GLOBALS['wp_embed'], 'autoembed'), 8);
}
add_action('wp_enqueue_scripts', 'disable_wp_embeds', 100);
Không nên tắt khi: Đã sử dụng plugin cache hoặc cần sử dụng chức năng embed video, social post,…
3. Giới hạn comments & load script có điều kiện
Nếu bài viết có nhiều bình luận, việc render toàn bộ comments và load script không cần thiết sẽ làm tăng DOM size và HTTP requests.
Trước tiên, hãy bật phân trang comments:
Cài đặt (Settings) → Bình luận (Discussion):
- Tick Chia bình luận thành các trang (Break comments into pages)
- Set 20–50 comments/page
Tiếp theo, chỉ load comment-reply.js khi thực sự cần:
/* Chỉ load comment-reply.js khi cần thiết */
add_action('wp_enqueue_scripts', function() {
if (is_singular() && comments_open() && get_option('thread_comments')) {
wp_enqueue_script('comment-reply');
}
});
Không cần làm khi: Không sử dụng tính năng bình luận hoặc website ít comment.
Bây giờ bạn đã biết cách tối ưu WordPress bằng code, nhưng để duy trì hiệu suất lâu dài, bạn cần chú ý một số điểm quan trọng sau đây.
Lưu ý quan trọng khi tối ưu WordPress
Mặc dù việc giảm bớt request rác bằng code rất hiệu quả, nhưng bạn cần lưu ý những điểm sau để tránh gặp vấn đề:
1. Luôn backup trước khi chỉnh sửa
Trước khi thêm bất kỳ đoạn code nào vào functions.php hoặc wp-config.php, hãy:
- Backup toàn bộ website (files + database)
- Hoặc ít nhất backup file bạn sắp chỉnh sửa
- Sử dụng child theme thay vì chỉnh sửa trực tiếp theme chính
Lý do: Một lỗi cú pháp nhỏ trong PHP có thể khiến toàn bộ website bị “white screen of death”.
2. Test trên Staging Environment
Nếu website đang chạy production, đừng test trực tiếp:
- Tạo staging site để test các đoạn code
- Kiểm tra kỹ mọi tính năng sau khi áp dụng
- Chỉ deploy lên production khi đã chắc chắn
3. Sử dụng Child Theme
Đừng bao giờ chỉnh sửa file functions.php của theme gốc vì:
- Khi update theme, mọi thay đổi sẽ bị mất
- Khó khăn trong việc debug khi có lỗi
Xem thêm: Cách tạo child theme WordPress nhanh chóng
4. Kiểm tra tương thích Theme/Plugin
Một số theme hoặc plugin có thể xung đột với code tối ưu của bạn. Nếu gặp vấn đề:
- Tạm thời vô hiệu hóa từng đoạn code để xác định nguyên nhân
- Kiểm tra console log (F12) xem có lỗi JavaScript không
- Liên hệ developer của theme/plugin để được hỗ trợ
5. Theo dõi hiệu suất thường xuyên
Tối ưu không phải là việc làm một lần xong xuôi:
- Kiểm tra PageSpeed hàng tuần
- Monitor uptime và response time
- Xóa revisions và optimized database định kỳ
Để giải đáp thêm những thắc mắc phổ biến mà nhiều bạn thường gặp khi tối ưu WordPress, mình đã tổng hợp 5 câu hỏi thường gặp nhất dưới đây.
Câu hỏi thường gặp (FAQ)
1. Tắt emoji, heartbeat có ảnh hưởng đến chức năng website không?
Không ảnh hưởng đến chức năng cốt lõi. Các trình duyệt hiện đại đều hỗ trợ emoji native nên việc tắt emoji script không làm mất hiển thị emoji. Với Heartbeat, nếu bạn giữ lại ở trang soạn thảo bài viết (như hướng dẫn), tính năng autosave vẫn hoạt động bình thường.
Tuy nhiên, nếu bạn làm việc nhóm và cần thông báo real-time khi nhiều người edit cùng bài, bạn có thể cân nhắc không tắt Heartbeat, chỉ tăng interval lên.
2. Giới hạn revision bao nhiêu là hợp lý?
Mình khuyên nên giữ 3-5 revisions. Con số này đủ để bạn khôi phục lại nội dung nếu vô tình xóa nhầm hoặc muốn quay lại phiên bản trước đó, nhưng không quá nhiều khiến database phình to.
Với blog cá nhân hoặc website ít chỉnh sửa, 3 revisions là đủ. Với website có nhiều biên tập viên làm việc nhóm, có thể tăng lên 5-7 revisions.
3. Code này có tương thích với Gutenberg và page builders không?
Có, hoàn toàn tương thích. Các đoạn code tối ưu trên chỉ tắt những scripts/tính năng không ảnh hưởng đến editor:
- Gutenberg vẫn hoạt động bình thường
- Page builders như Elementor, Divi, WPBakery không bị ảnh hưởng
- Các plugin form, SEO vẫn chạy tốt
Mình đã test trên nhiều theme và page builder khác nhau không gặp vấn đề gì.
4. Nếu muốn quay lại trạng thái ban đầu thì làm sao?
Rất đơn giản, chỉ cần xóa các đoạn code bạn đã thêm vào functions.php hoặc wp-config.php. WordPress sẽ tự động load lại các scripts mặc định.
Đây cũng là lý do tại sao mình khuyên bạn nên:
- Comment rõ ràng từng đoạn code
- Gom tất cả code tối ưu vào một section riêng trong file
- Backup file trước khi chỉnh sửa
5. Có cần dọn cache sau khi áp dụng code tối ưu không?
Có, rất quan trọng! Sau khi thêm code tối ưu, bạn cần:
- Clear cache của plugin caching (nếu có dùng W3 Total Cache, WP Super Cache, v.v.)
- Clear cache CDN (Cloudflare, CloudFront, v.v.)
- Xóa cache trình duyệt (Ctrl+Shift+R để hard reload)
Nếu không clear cache, bạn sẽ vẫn thấy các file cũ được load và không thấy sự khác biệt về hiệu suất.
Tổng kết
Qua bài viết này, bạn đã học được cách tối ưu request không sử dụng một cách hiệu quả chỉ trong 10 phút. Ba tối ưu chính mình đã hướng dẫn là:
- Tắt Emoji Scripts – Giảm 1 HTTP request và ~11KB JavaScript không cần thiết
- Tối ưu Heartbeat API – Giảm AJAX requests, giảm tải CPU server đáng kể
- Giới hạn Post Revisions – Giảm kích thước database, tăng tốc truy vấn
Điều đặc biệt là tất cả những tối ưu này đều sử dụng code thuần, không cần cài thêm plugin nào, giúp website của bạn nhẹ hơn và nhanh hơn một cách bền vững.
Chúc bạn tối ưu thành công và có một website WordPress siêu nhanh! Nếu có bất kỳ thắc mắc nào, đừng ngần ngại để lại comment bên dưới nhé.


