
Tóm tắt nhanh
- WordPress cung cấp hàm
remove_menu_page()để ẩn menu admin mà không cần plugin nặng - Bạn nên kết hợp với kiểm tra user capability (
current_user_can()) để chỉ ẩn menu với người dùng không phải admin - Có thể dùng plugin như Admin Menu Editor hoặc WP Adminify nếu không thoải mái với code
- Ẩn menu chỉ là ẩn giao diện — cần chặn quyền truy cập URL để đảm bảo bảo mật thực sự
Tại sao cần ẩn admin menu trong WordPress?
Ẩn admin menu là cách nhanh nhất để giảm bối rối cho khách hàng khi bàn giao website WordPress. Mặc định, WordPress hiển thị rất nhiều menu trong dashboard — từ Plugins, Tools, Appearance cho đến Users. Với người dùng không chuyên, đây là một ” mê cung” thực sự.
Theo khảo sát của WP Adminify, 67% khách hàng không chuyên từng vô tình click nhầm vào menu kỹ thuật và gây lỗi website [1]. Chỉ cần ẩn đi những menu không cần thiết bằng cách ẩn admin menu WordPress, bạn giảm đáng kể rủi ro và tăng trải nghiệm người dùng.
Bạn đang đọc bài viết thuộc chuyên mục WordPress của VietnamTutor — nơi mình chia sẻ những thủ thuật quản trị website dựa trên kinh nghiệm thực chiến với hàng trăm dự án.
Có hai lý do chính để ẩn admin menu:
- Giảm bối rối cho khách hàng — Chỉ hiển thị menu họ thực sự cần: Posts, Pages, Media, và một số tùy chỉnh cơ bản.
- Bảo mật nâng cao — Ngăn người dùng cố tình hoặc vô tình truy cập các khu vực nhạy cảm như Plugins, Theme Editor, hay Settings.

Cách dùng hàm remove_menu_page() để ẩn admin menu WordPress
Hàm remove_menu_page() là cách nhanh nhất để ẩn một menu cấp cao nhất trong WordPress admin. Hàm này được tích hợp sẵn trong WordPress core từ phiên bản 3.1.0, không cần cài thêm gì [2].
Cú pháp cơ bản
Hàm nhận một tham số duy nhất là $menu_slug — chính là chuỗi định danh của menu mà bạn muốn ẩn.
function remove_menu_page( string $menu_slug )
Ví dụ đơn giản nhất
Đoạn code dưới đây ẩn menu Comments và Tools cho tất cả người dùng:
function vietnamsite_remove_admin_menus() {
remove_menu_page( 'edit-comments.php' ); // Ẩn menu Comments
remove_menu_page( 'tools.php' ); // Ẩn menu Tools
}
add_action( 'admin_menu', 'vietnamsite_remove_admin_menus', 999 );Bạn nhúng đoạn code này vào file functions.php của theme đang dùng (hoặc child theme để tránh mất khi cập nhật theme). Priority 999 đảm bảo code chạy sau khi WordPress đã build xong toàn bộ menu [3].

Cách ẩn menu theo vai trò người dùng
Việc ẩn menu cho tất cả người dùng thường không đủ — bạn cần phân biệt theo vai trò để chỉ ẩn menu với người không phải admin. WordPress cung cấp hàm current_user_can() để kiểm tra capability của người dùng hiện tại.
Kiểm tra vai trò Administrator
Đoạn code dưới đây chỉ ẩn menu Plugins, Appearance và Settings khi người dùng không phải Administrator:
function vietnamsite_hide_menu_for_non_admins() {
// current_user_can('manage_options') = Administrator
if ( ! current_user_can( 'manage_options' ) ) {
remove_menu_page( 'plugins.php' ); // Plugins
remove_menu_page( 'themes.php' ); // Appearance
remove_menu_page( 'options-general.php' ); // Settings
remove_menu_page( 'tools.php' ); // Tools
remove_menu_page( 'users.php' ); // Users
}
}
add_action( 'admin_menu', 'vietnamsite_hide_menu_for_non_admins', 999 );Kiểm tra vai trò Editor
Nếu bạn muốn ẩn thêm menu Posts và Comments cho Editor (chỉ để họ quản lý Pages):
function vietnamsite_editor_menu_cleanup() {
if ( current_user_can( 'editor' ) ) {
remove_menu_page( 'edit.php' ); // Posts
remove_menu_page( 'edit-comments.php' ); // Comments
remove_menu_page( 'upload.php' ); // Media
}
}
add_action( 'admin_menu', 'vietnamsite_editor_menu_cleanup', 999 );Danh sách capabilities phổ biến trong WordPress
- manage_options
- Administrator — quyền cao nhất, truy cập mọi thứ
- edit_others_posts
- Editor — quản lý mọi bài viết, pages, comments
- publish_posts
- Author, Contributor — có thể đăng bài
- read
- Subscriber — chỉ đọc, không đăng bài

Danh sách menu slug phổ biến để ẩn admin menu WordPress
Để ẩn đúng menu, bạn cần biết chính xác slug của từng menu trong WordPress. Dưới đây là danh sách đầy đủ các menu slug mặc định và slug của một số plugin phổ biến [4]:
| Menu | Slug |
|---|---|
| Dashboard | index.php |
| Posts | edit.php |
| Media | upload.php |
| Pages | edit.php?post_type=page |
| Comments | edit-comments.php |
| Appearance | themes.php |
| Plugins | plugins.php |
| Users | users.php |
| Tools | tools.php |
| Settings | options-general.php |
| WooCommerce | woocommerce |
| Yoast SEO | wpseo_dashboard |
| Elementor | elementor |
| Contact Form 7 | wpcf7 |
Code đầy đủ cho bàn giao website cho khách hàng
Đoạn code dưới đây là template hoàn chỉnh để ẩn hầu hết menu kỹ thuật khi bàn giao website cho khách hàng (chỉ để lại menu cần thiết):
/**
* Ẩn admin menu cho khách hàng - VietnamTutor
* Chỉ giữ lại: Dashboard, Posts, Pages, Media, Profile
*/
function vietnamsite_client_admin_cleanup() {
// Chỉ áp dụng cho người không phải admin
if ( ! current_user_can( 'manage_options' ) ) {
remove_menu_page( 'edit-comments.php' ); // Comments
remove_menu_page( 'themes.php' ); // Appearance
remove_menu_page( 'tools.php' ); // Tools
remove_menu_page( 'options-general.php' ); // Settings
remove_menu_page( 'plugins.php' ); // Plugins
remove_menu_page( 'users.php' ); // Users
remove_menu_page( 'index.php' ); // Dashboard (ẩn nếu cần)
remove_menu_page( 'edit.php' ); // Posts (ẩn nếu cần)
// Ẩn submenu nhạy cảm
remove_submenu_page( 'themes.php', 'theme-editor.php' ); // Theme Editor
remove_submenu_page( 'themes.php', 'customize.php' ); // Customize (ẩn nếu cần)
remove_submenu_page( 'plugins.php', 'plugin-editor.php' ); // Plugin Editor
}
}
add_action( 'admin_menu', 'vietnamsite_client_admin_cleanup', 999 );
Cách ẩn submenu trong WordPress để hoàn thiện ẩn admin menu
Ngoài menu cấp cao nhất, bạn cũng nên ẩn các submenu nhạy cảm bên trong. WordPress cung cấp hàm remove_submenu_page() để làm việc này [5].
Cú pháp
remove_submenu_page( $menu_slug, $submenu_slug )
Tham số đầu tiên là slug của menu cha, tham số thứ hai là slug của submenu cần ẩn.
Ví dụ ẩn Theme Editor và Plugin Editor
Đây là hai submenu nguy hiểm nhất — chúng cho phép chỉnh sửa trực tiếp code của theme và plugin, có thể phá hỏng toàn bộ website:
function vietnamsite_remove_dangerous_submenus() {
if ( ! current_user_can( 'manage_options' ) ) {
// Ẩn Theme Editor trong Appearance
remove_submenu_page( 'themes.php', 'theme-editor.php' );
// Ẩn Plugin Editor trong Plugins
remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
// Ẩn Customize trong Appearance (nếu không muốn khách tùy chỉnh giao diện)
remove_submenu_page( 'themes.php', 'customize.php' );
// Ẩn Widgets và Menu (nếu chỉ muốn khách quản lý nội dung)
remove_submenu_page( 'themes.php', 'widgets.php' );
remove_submenu_page( 'themes.php', 'nav-menus.php' );
}
}
add_action( 'admin_menu', 'vietnamsite_remove_dangerous_submenus', 999 );Ẩn submenu của plugin cụ thể
Nếu khách hàng dùng plugin như Contact Form 7 hoặc WooCommerce, bạn có thể ẩn submenu không cần thiết:
function vietnamsite_cleanup_plugin_submenus() {
if ( ! current_user_can( 'manage_options' ) ) {
// WooCommerce submenus
remove_submenu_page( 'woocommerce', 'wc-settings' );
remove_submenu_page( 'woocommerce', 'wc-addons' );
remove_submenu_page( 'woocommerce', 'woo-ai' );
// Contact Form 7 submenus
remove_submenu_page( 'wpcf7', 'wpcf7-integration' );
}
}
add_action( 'admin_menu', 'vietnamsite_cleanup_plugin_submenus', 999 );Dùng plugin thay thế code
Nếu bạn không thoải mái với việc chỉnh sửa code, có nhiều plugin giúp ẩn admin menu WordPress dễ dàng. Theo thống kê của CodeCanyon, plugin Hide Admin Menu đã được bán hơn 1.000 lượt với rating 4.52 sao [6].
1. Admin Menu Editor (miễn phí)
Plugin cho phép bạn ẩn, đổi tên, sắp xếp lại thứ tự menu qua giao diện trực quan. Ưu điểm: nhẹ, miễn phí, dễ dùng. Nhược điểm: không có tính năng chặn URL trực tiếp.
2. WP Adminify
Plugin cao cấp với giao diện kéo-thả để quản lý admin menu. WP Adminify cũng cung cấp tính năng chặn URL — đảm bảo người dùng không thể truy cập trang bị ẩn bằng cách gõ trực tiếp URL [1].
3. ID Admin Menu Customizer (miễn phí)
Plugin miễn phí cho phép kéo-thả sắp xếp lại menu, ẩn menu bằng icon mắt, và thêm divider. Phiên bản mới nhất (1.1.1) đã được cập nhật tương thích WordPress 6.9 [7].
4. Incognito Admin Manager
Plugin tập trung vào phân quyền theo vai trò. Phiên bản Pro hỗ trợ chế độ “Block & Show No Access Page” — không chỉ ẩn menu mà còn chặn truy cập URL cho từng vai trò cụ thể [8].

Lưu ý bảo mật quan trọng
Ẩn menu không đồng nghĩa với chặn quyền truy cập. Đây là sai lầm phổ biến nhất khi tùy chỉnh admin menu.
Ẩn menu ≠ Chặn truy cập
Khi bạn dùng remove_menu_page(), menu biến mất khỏi sidebar nhưng người dùng vẫn có thể truy cập trang đó bằng cách gõ trực tiếp URL vào trình duyệt. Ví dụ, nếu bạn ẩn menu Plugins, người dùng vẫn có thể truy cập /wp-admin/plugins.php.
Giải pháp: Kết hợp với capability check
Cách tốt nhất là kết hợp ẩn menu với kiểm tra capability ở cấp độ trang. Bạn có thể dùng hook admin_init để chặn hoàn toàn:
function vietnamsite_block_admin_access() {
// Chuyển hướng về dashboard nếu không phải admin cố truy cập trang nhạy cảm
if ( ! current_user_can( 'manage_options' )
&& ! wp_doing_ajax()
&& isset( $_GET['page'] )
&& in_array( $_GET['page'], array( 'wc-settings', 'wc-addons', 'woo-ai' ) ) ) {
wp_die( 'Bạn không có quyền truy cập trang này.' );
}
}
add_action( 'admin_init', 'vietnamsite_block_admin_access' );Nên dùng plugin bảo mật chuyên dụng
Nếu bạn cần bảo mật nghiêm ngặt, hãy dùng plugin như WP Adminify hoặc Incognito Admin Manager Pro — chúng hỗ trợ chế độ “Block & Show No Access Page” thay vì chỉ ẩn menu [1][8].
Sử dụng child theme
Khi thêm code vào functions.php, luôn dùng child theme. Nếu không, code sẽ bị xóa khi bạn cập nhật theme chính. Cách tốt nhất là tạo plugin tùy chỉnh riêng (muốn-đặt-tên) để giữ code độc lập với theme.

Nguồn tham khảo
- WP Adminify – How to Reorder and Remove Admin Menu Items in WordPress (Nov 2025)
- WordPress Developer Resources – remove_menu_page()
- Medium – WordPress Admin Menu Editor: A Custom Coder’s Guide (Nov 2025)
- WP Code Tips – How to Remove Unused Menu Items from WordPress Dashboard (Sep 2025)
- Liquid Web – How to Remove Customize From WordPress Admin Menu
- CodeCanyon – WordPress Hide Admin Menu Plugin (Dec 2025)
- Insight Dezign – ID Admin Menu Customizer (Feb 2026)
- DeeWP – How to Hide Admin Menu Items in WordPress by User Role (Feb 2026)
Các câu hỏi thường gặp
Ẩn admin menu có ảnh hưởng đến SEO của website không?
Không. Admin menu chỉ hiển thị trong trang quản trị WordPress (/wp-admin/), không ảnh hưởng gì đến frontend — nơi Google bot thu thập dữ liệu. Ẩn menu hoàn toàn không tác động đến SEO.
Có nên ẩn menu Dashboard không?
Tùy trường hợp. Với khách hàng không chuyên, ẩn Dashboard có thể khiến họ thấy bối rối khi đăng nhập. Thay vào đó, bạn nên ẩn các menu nguy hiểm hơn như Plugins, Theme Editor, Settings. Dashboard thường hữu ích vì hiển thị tổng quan website.
Code ẩn menu có bị mất khi cập nhật WordPress không?
Không, code trong functions.php không bị ảnh hưởng bởi cập nhật WordPress core. Tuy nhiên, nếu code nằm trong theme và bạn cập nhật theme, code sẽ bị ghi đè. Vì vậy, luôn dùng child theme hoặc tạo plugin tùy chỉnh riêng để giữ code an toàn qua mọi bản cập nhật.
Làm sao tìm slug của menu plugin?
Cách nhanh nhất: mở trình duyệt, click chuột phải vào menu của plugin, chọn “Inspect”, tìm thuộc tính href của thẻ <a>. Chuỗi cuối trong URL chính là slug. Ví dụ: /wp-admin/admin.php?page=wc-settings → slug là wc-settings.
Plugin ẩn admin menu có làm chậm website không?
Hầu hết plugin ẩn admin menu rất nhẹ, gần như không ảnh hưởng đến tốc độ frontend. Tuy nhiên, dùng code snippet trong functions.php là cách nhẹ nhất vì không cần tải thêm file PHP hay JavaScript. Nếu dùng plugin, chọn plugin tối ưu tốt và chỉ cài plugin cần thiết.
Khách hàng có thể khôi phục menu đã ẩn không?
Nếu khách hàng là Administrator, họ có thể chỉnh sửa file functions.php hoặc cài plugin để hiện lại menu. Vì vậy, nếu bạn muốn khóa hoàn toàn quyền truy cập, cần kết hợp thêm kiểm tra capability ở cấp độ trang (xem mục “Lưu ý bảo mật” bên trên) hoặc dùng plugin hỗ trợ chặn URL.
Có thể ẩn menu cho một người dùng cụ thể thay vì theo vai trò không?
Có. Thay vì dùng current_user_can('role'), bạn có thể dùng wp_get_current_user() để kiểm tra username cụ thể:
$current_user = wp_get_current_user();
if ( $current_user->user_login === 'khach_hang_abc' ) {
remove_menu_page( 'tools.php' );
remove_menu_page( 'plugins.php' );
}
Bạn đang tìm kiếm giải pháp bàn giao website WordPress chuyên nghiệp cho khách hàng? VietnamTutor cung cấp dịch vụ website trọn gói — từ thiết kế, phát triển đến tối ưu hóa dashboard cho người dùng cuối.
