File functions.php được xem là một trong những file quan trọng nhất trong WordPress. Đây là nơi giúp bạn thêm chức năng mới, tùy chỉnh hành vi của theme và can thiệp sâu vào cách website hoạt động mà không cần cài thêm quá nhiều plugin.
Tuy nhiên, cũng chính vì có quyền truy cập sâu vào hệ thống nên chỉ cần một lỗi cú pháp nhỏ trong file này cũng có thể khiến toàn bộ website bị trắng trang (White Screen of Death).
Trong quá trình thiết kế và tối ưu hơn 500 website WordPress cho khách hàng, đội ngũ Halo Media nhận thấy rất nhiều người dùng biết đến functions.php nhưng chưa thực sự hiểu file này nằm ở đâu, hoạt động như thế nào và khi nào nên sử dụng.
Bài viết này sẽ giúp bạn hiểu rõ:
- File functions.php nằm ở đâu trong WordPress.
- Vai trò thực sự của file functions.php.
- Những đoạn code hữu ích thường dùng.
- Cách chỉnh sửa an toàn không làm sập website.
- Các lỗi phổ biến mà người mới thường gặp.
Nếu bạn đang quản trị website WordPress hoặc muốn học cách tùy chỉnh website chuyên sâu hơn thì đây là kiến thức rất đáng để nắm vững.
Mục lục
File functions.php nằm ở đâu?

Trong gần 10 năm thiết kế Website WordPress tại Halo Media, đội ngũ chúng tôi đã ứng dụng kiến thức về File functions.php trong WordPress ở đâu và có chức năng gì cho hơn 500 dự án khách hàng.
Hiểu đơn giản, file functions.php là nơi chứa các đoạn mã PHP giúp mở rộng chức năng của theme.
Mỗi theme WordPress đều có một file functions.php riêng.
Khi theme được kích hoạt, WordPress sẽ tự động nạp file này và thực thi toàn bộ các đoạn mã bên trong.
Cách truy cập:
- Thông qua Hosting hoặc File Manager.
- Thông qua FTP.
- Thông qua Theme File Editor của WordPress.
Đường dẫn phổ biến:
wp-content/themes/ten-theme/functions.phpVí dụ nếu website đang sử dụng theme Flatsome:
/wp-content/themes/flatsome/functions.phpNếu website là một chiếc xe hơi thì:
- Theme chính là bộ khung xe.
- Plugin là các phụ kiện lắp thêm.
- functions.php giống như hộp điều khiển trung tâm cho phép bạn thay đổi cách chiếc xe vận hành.
Bạn có thể thêm tính năng mới mà không cần sửa trực tiếp mã nguồn WordPress Core.
Chức năng của file functions.php
Tham khảo: WordPress Codex chính thức
File functions.php thường được gọi là “bộ não” của theme WordPress.
Đây là nơi các lập trình viên thêm các chức năng tùy chỉnh cho website.
Một số công việc phổ biến có thể thực hiện:
- Thêm hoặc vô hiệu hóa tính năng WordPress.
- Đăng ký menu.
- Đăng ký widget và sidebar.
- Tạo shortcode.
- Thêm CSS hoặc JavaScript.
- Can thiệp vào WooCommerce.
- Tạo Custom Post Type.
- Tạo Taxonomy riêng.
- Tối ưu hiệu suất website.
- Tùy chỉnh trang đăng nhập WordPress.
Ví dụ thực tế:
- Tạo menu đa cấp cho website công ty.
- Tạo khu vực “Khóa học” riêng.
- Tự động chèn mã Google Analytics.
- Ẩn thanh Admin Bar.
- Tạo shortcode hiển thị hotline.
- Tạo popup hoặc thông báo khuyến mãi.
functions.php và Plugin khác nhau như thế nào?

| Tiêu chí | functions.php | Plugin |
|---|---|---|
| Độ linh hoạt | Cao | Trung bình |
| Giữ lại khi đổi theme | Không | Có |
| Dễ sử dụng | Khó hơn | Dễ hơn |
| Khả năng tùy chỉnh | Rất cao | Phụ thuộc plugin |
Đây là điểm mà rất nhiều người mới thường nhầm lẫn.
Nếu chức năng chỉ phục vụ cho theme hiện tại thì nên đặt trong functions.php.
Nếu muốn giữ lại chức năng khi đổi theme trong tương lai thì nên tạo plugin riêng.
Khi nào nên dùng functions.php?
Nếu bạn đang triển khai dự án website mới, tham khảo Dịch vụ thiết kế Website chuẩn SEO của Halo Media — chúng tôi đã ứng dụng các best practices trong bài này cho 500+ khách hàng.
Bạn nên sử dụng functions.php trong các trường hợp:
- Thêm tính năng nhỏ cho website.
- Can thiệp vào giao diện theme.
- Tùy chỉnh WooCommerce.
- Tạo shortcode.
- Tối ưu hiệu suất.
- Thêm Hook hoặc Filter.
Không nên dùng functions.php khi:
- Code quá lớn.
- Tính năng cần giữ lại khi đổi theme.
- Dự án có nhiều lập trình viên cùng tham gia.
Không nên chỉnh sửa trực tiếp functions.php của theme gốc. Hãy sử dụng Child Theme để tránh mất toàn bộ code khi cập nhật theme.
Tại sao nên chỉnh sửa functions.php trong Child Theme?

Một trong những lỗi phổ biến nhất của người mới là thêm code trực tiếp vào theme chính.
Khi nhà phát triển theme phát hành bản cập nhật mới, toàn bộ code tùy chỉnh sẽ bị ghi đè và mất hoàn toàn.
Child Theme được tạo ra để giải quyết vấn đề này.
Lợi ích:
- Không mất code khi cập nhật theme.
- Dễ bảo trì.
- An toàn hơn.
- Phù hợp với website doanh nghiệp.
Đây cũng là phương pháp mà Halo Media áp dụng cho toàn bộ website khách hàng khi triển khai WordPress.
Cách thêm code vào functions.php mà không bị lỗi
- Luôn bao code trong hàm và sử dụng hook như
add_actionhoặcadd_filter - Không viết lệnh trực tiếp ngoài hàm
- Tránh trùng tên hàm với plugin khác
Các đoạn mã functions.php hữu ích
1. Thêm menu cho theme
function custom_theme_menus() {
register_nav_menus(array(
'main_menu' => 'Menu chính',
'footer_menu' => 'Menu chân trang'
));
}
add_action('init', 'custom_theme_menus');2. Ẩn thanh admin bar cho người không phải quản trị
if (!current_user_can('administrator')) {
add_filter('show_admin_bar', '__return_false');
}3. Tắt Gutenberg (sử dụng Classic Editor)
add_filter('use_block_editor_for_post', '__return_false');4. Shortcode hiển thị năm hiện tại
function show_current_year() {
return date('Y');
}
add_shortcode('year', 'show_current_year');Sử dụng: [year] trong bài viết sẽ hiển thị năm hiện tại.
5. Tạo Custom Post Type: Khóa Học
function create_custom_post_khoahoc() { register_post_type('khoa_hoc', array( 'label' => 'Khóa Học', 'public' => true, 'supports' => array('title', 'editor', 'thumbnail'), 'show_in_rest' => true, 'rewrite' => array('slug' => 'khoa-hoc') )); } add_action('init', 'create_custom_post_khoahoc');
6. Tạo taxonomy “Cấp Độ” cho post type “Khóa Học”
function create_custom_taxonomy() {
register_taxonomy('cap_do', 'khoa_hoc', array(
'label' => 'Cấp Độ',
'hierarchical' => true,
'public' => true,
'show_in_rest' => true,
'rewrite' => array('slug' => 'cap-do')
));
}
add_action('init', 'create_custom_taxonomy');7. Chèn CSS vào frontend
function custom_css_frontend() {
echo '<style>
body { background: #f8f8f8; }
</style>';
}
add_action('wp_head', 'custom_css_frontend');8. Thêm JavaScript vào footer
function custom_script_footer() {
echo '<script>
console.log("JS đã được thêm từ functions.php");
</script>';
}
add_action('wp_footer', 'custom_script_footer');<br />Lỗi thường gặp khi sửa file functions.php

File functions.php mang lại khả năng tùy chỉnh gần như không giới hạn cho WordPress, nhưng đây cũng là nơi khiến rất nhiều website gặp sự cố nếu chỉnh sửa không đúng cách.
Trong quá trình hỗ trợ khách hàng xử lý lỗi WordPress, Halo Media nhận thấy phần lớn các trường hợp website bị trắng trang hoặc hoạt động không ổn định đều liên quan đến việc chỉnh sửa functions.php sai cách.
Trắng trang do lỗi cú pháp PHP
Đây là lỗi phổ biến nhất mà người mới thường gặp.
Chỉ cần thiếu một dấu ;, một dấu } hoặc một dấu ngoặc đơn là WordPress có thể ngừng hoạt động ngay lập tức.
Ví dụ:
function custom_text() {
echo "Hello WordPress"
}
Đoạn code trên thiếu dấu ; sau câu lệnh echo nên sẽ gây lỗi PHP.
Khi lỗi xảy ra, website có thể xuất hiện:
- Trang trắng hoàn toàn (White Screen of Death).
- Lỗi HTTP 500.
- Không thể truy cập trang quản trị WordPress.
Để hạn chế rủi ro, bạn nên sao lưu file trước khi chỉnh sửa hoặc thử nghiệm trên website staging trước khi áp dụng lên website chính.
Ghi đè code có sẵn mà không kiểm tra
Nhiều người thường sao chép các đoạn code trên Internet rồi dán trực tiếp vào functions.php mà không kiểm tra xem theme hoặc plugin hiện tại đã sử dụng chức năng tương tự hay chưa.
Điều này có thể dẫn đến:
- Xung đột với plugin.
- Trùng tên hàm.
- Website hoạt động không đúng mong muốn.
- Lỗi khi cập nhật theme hoặc plugin.
Ví dụ nếu plugin đã có hàm:
function custom_login_logo() {
// code
}
Và bạn tiếp tục tạo một hàm cùng tên trong functions.php, WordPress sẽ báo lỗi “Cannot redeclare function”.
Vì vậy trước khi thêm code mới, hãy kiểm tra xem chức năng đó đã tồn tại hay chưa.
Không kiểm tra vai trò người dùng

Một lỗi khác khá phổ biến là thêm tính năng mới nhưng không giới hạn quyền truy cập.
Ví dụ bạn tạo một trang quản trị riêng hoặc một tính năng đặc biệt nhưng lại không kiểm tra quyền người dùng.
Kết quả là:
- Người dùng thông thường có thể truy cập khu vực quản trị.
- Dữ liệu quan trọng có nguy cơ bị thay đổi.
- Xuất hiện lỗ hổng bảo mật.
Trước khi thực hiện các thao tác quản trị, nên kiểm tra quyền bằng các hàm như:
current_user_can('administrator')
hoặc
current_user_can('manage_options')
Đây là nguyên tắc cơ bản giúp website vận hành an toàn hơn.
Chỉnh sửa trực tiếp trên theme gốc
Nhiều quản trị viên thêm code trực tiếp vào theme chính (Parent Theme).
Tuy nhiên khi cập nhật theme, toàn bộ code tùy chỉnh sẽ bị ghi đè và mất hoàn toàn.
Đây là lý do các lập trình viên WordPress luôn khuyến nghị sử dụng Child Theme khi chỉnh sửa functions.php.
Thêm quá nhiều chức năng vào một file
Ban đầu functions.php có thể chỉ chứa vài đoạn code nhỏ. Nhưng theo thời gian, nhiều website thêm hàng chục hoặc hàng trăm đoạn code khác nhau vào cùng một file.
Kết quả là:
- Khó quản lý.
- Khó tìm lỗi.
- Khó nâng cấp.
- Khó bàn giao cho người khác.
Đối với các dự án lớn, nên tách các nhóm chức năng thành nhiều file riêng để dễ quản trị và bảo trì lâu dài.
Mẹo dùng functions.php hiệu quả

Functions.php là công cụ rất mạnh, nhưng để sử dụng hiệu quả và an toàn, bạn nên tuân thủ một số nguyên tắc được cộng đồng WordPress áp dụng rộng rãi.
Đặt tên hàm có tiền tố riêng (Prefix)
Một trong những nguyên nhân gây xung đột phổ biến là trùng tên hàm.
Thay vì:
function custom_menu() {
}
Nên sử dụng:
function hm_custom_menu() {
}
Trong đó “hm” là viết tắt của Halo Media.
Việc thêm tiền tố giúp hạn chế tối đa khả năng trùng tên với plugin hoặc theme khác.
Luôn sử dụng Hook của WordPress
WordPress cung cấp hệ thống Hook rất mạnh gồm:
- Action Hook.
- Filter Hook.
Thay vì chạy code trực tiếp, hãy sử dụng:
add_action()
hoặc
add_filter()
Cách làm này giúp code dễ kiểm soát hơn và tương thích tốt với hệ sinh thái WordPress.
Không viết lệnh trực tiếp bên ngoài hàm
Một số người mới thường đặt các câu lệnh PHP chạy trực tiếp trong file functions.php.
Điều này khiến mã nguồn khó kiểm soát và dễ phát sinh lỗi ngoài ý muốn.
Thay vào đó, nên đóng gói toàn bộ logic trong hàm riêng và kích hoạt thông qua Hook phù hợp.
Tách code thành nhiều file nếu dự án lớn
Đối với website doanh nghiệp hoặc website có nhiều tính năng, functions.php không nên chứa toàn bộ mã nguồn.
Bạn có thể tạo cấu trúc như:
inc/
├── custom-post-type.php
├── custom-taxonomy.php
├── shortcode.php
├── security.php
└── optimization.php
Sau đó gọi vào functions.php:
require_once get_template_directory() . '/inc/security.php';
require_once get_template_directory() . '/inc/shortcode.php';
Cách tổ chức này giúp mã nguồn chuyên nghiệp hơn và dễ bảo trì trong nhiều năm.
Luôn sao lưu trước khi chỉnh sửa
Dù chỉ thêm một dòng code nhỏ, bạn vẫn nên tạo bản sao lưu trước khi thay đổi.
Nếu xảy ra lỗi, việc khôi phục website sẽ nhanh chóng và an toàn hơn rất nhiều.
Đây là nguyên tắc mà đội ngũ Halo Media áp dụng cho mọi dự án WordPress trước khi triển khai bất kỳ thay đổi nào liên quan đến functions.php.
Kết luận
File functions.php là một công cụ cực kỳ mạnh mẽ trong WordPress, giúp bạn tùy chỉnh và mở rộng chức năng cho theme một cách linh hoạt. Chỉ với vài dòng code đúng chuẩn, bạn đã có thể thêm tính năng, tối ưu tốc độ, giảm phụ thuộc plugin và làm chủ website của mình. Tuy nhiên, hãy luôn sao lưu trước khi chỉnh sửa. Nếu bạn làm chủ được functions.php, bạn sẽ làm chủ được cách WordPress vận hành theo đúng mục tiêu của bạn.
Bài viết cùng chủ đề
- Child Theme là gì ? Tại sao phải dùng child theme trong WordPress
- Băng Thông Là Gì? Cách tối ưu Website để tiết kiệm bằng thông
- Favicon là gì ? Cách tạo favicon cho Website
Câu hỏi thường gặp
Bài viết & dịch vụ liên quan
- Dịch vụ thiết kế Website chuẩn SEO
- Hướng Dẫn Quy Trình Lập Trang Web Công Ty
- Dịch vụ Thiết kế Website trọn gói

Bài viết liên quan
Băng Thông Là Gì? Cách Tối Ưu Website Để Tiết Kiệm Băng Thông
Khi website phát triển và lượng truy cập ngày càng tăng, nhiều chủ doanh nghiệp
Th6
Top 7 Plugin Bảo Mật Website WordPress Tốt Nhất
Trên kho WordPress.org có hàng nghìn plugin nhưng không phải plugin nào cũng đáng cài.
Th6
Top 7 Plugin Làm Forum Bằng WordPress Tốt Nhất
Xây dựng diễn đàn (forum) trên WordPress giúp tạo cộng đồng, tăng tương tác và
Th6
Top 7 Theme WordPress WooCommerce Thiết Kế Bán Hàng Đẹp Nhất
Theme là ‘bộ áo’ của website. Chọn sai theme khiến phải làm lại toàn bộ
Th6
Top 7 Theme WordPress Thiết Kế Website Tin Tức, Blog Tốt Nhất
Theme là ‘bộ áo’ của website. Chọn sai theme khiến phải làm lại toàn bộ
Th6
Source Code Là Gì? Tìm Hiểu Mã Nguồn Website Từ A-Z
Source code (mã nguồn) là tập hợp các dòng lệnh tạo nên website — hiểu
Th6