Mẹo WordPress: 15 Đoạn Code Hữu Ích Cho functions.php
File functions.php là nơi bạn có thể thêm vô số tính năng vào WordPress mà không cần cài thêm plugin. Dưới đây là 15 đoạn code hữu ích nhất mà tôi dùng trong mọi dự án.
⚠️ Lưu ý: Luôn backup trước khi chỉnh sửa functions.php. Tốt nhất là dùng Child Theme để tránh mất code khi cập nhật theme.
1. Tắt Gutenberg, dùng Classic Editor
add_filter('use_block_editor_for_post', '__return_false');
2. Tăng giới hạn upload file
@ini_set('upload_max_size', '64M');
@ini_set('post_max_size', '64M');
@ini_set('max_execution_time', '300');
3. Xóa version WordPress khỏi HTML
Ẩn phiên bản WP để hacker khó xác định lỗ hổng:
remove_action('wp_head', 'wp_generator');
4. Thêm Google Analytics không cần plugin
function add_google_analytics() { ?>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
5. Tùy chỉnh thông báo đăng nhập thất bại
function custom_login_error() {
return 'Thông tin đăng nhập không chính xác. Vui lòng thử lại.';
}
add_filter('login_errors', 'custom_login_error');
6. Redirect sau khi đăng nhập
function custom_login_redirect($redirect_to, $request, $user) {
if (isset($user->roles) && is_array($user->roles)) {
if (in_array('administrator', $user->roles)) {
return admin_url();
} else {
return home_url('/tai-khoan/');
}
}
return $redirect_to;
}
add_filter('login_redirect', 'custom_login_redirect', 10, 3);
7. Thêm excerpt cho Pages
add_post_type_support('page', 'excerpt');
8. Xóa emoji scripts (tăng tốc)
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');
9. Tắt RSS feed nếu không cần
function disable_feeds() {
wp_die(__('Không có feed nào ở đây!'));
}
add_action('do_feed', 'disable_feeds', 1);
add_action('do_feed_rdf', 'disable_feeds', 1);
add_action('do_feed_rss', 'disable_feeds', 1);
add_action('do_feed_rss2', 'disable_feeds', 1);
add_action('do_feed_atom', 'disable_feeds', 1);
10. Tự động thêm rel="noopener" cho link ngoài
function add_noopener_links($content) {
return str_replace(
'target="_blank"',
'target="_blank" rel="noopener noreferrer"',
$content
);
}
add_filter('the_content', 'add_noopener_links');
11. Hiển thị thời gian đọc ước tính
function reading_time() {
$content = get_post_field('post_content', get_the_ID());
$word_count = str_word_count(strip_tags($content));
$minutes = ceil($word_count / 200);
return $minutes . ' phút đọc';
}
// Dùng trong template: echo reading_time();
12. Giới hạn số revision
define('WP_POST_REVISIONS', 5);
13. Thêm class "active" vào menu item hiện tại
function add_active_class($classes, $item) {
if (in_array('current-menu-item', $classes)) {
$classes[] = 'active';
}
return $classes;
}
add_filter('nav_menu_css_class', 'add_active_class', 10, 2);
14. Tùy chỉnh footer trong WP Admin
add_filter('admin_footer_text', function() {
return 'Được xây dựng với ❤️ bởi WPVault';
});
15. Thêm nút quay lại đầu trang
function back_to_top() { ?>
<button id="back-to-top" onclick="window.scrollTo({top:0,behavior:'smooth'})"
style="display:none;position:fixed;bottom:30px;right:30px;background:#C9A84C;
color:#fff;border:none;border-radius:50%;width:44px;height:44px;
font-size:20px;cursor:pointer;z-index:999">↑</button>
<script>
window.addEventListener('scroll', function() {
var btn = document.getElementById('back-to-top');
btn.style.display = window.scrollY > 300 ? 'block' : 'none';
});
</script>