0
0
Lập trình
NM

Tùy Chỉnh Menu Quản Trị WordPress - Không Cần Plugin

Đăng vào 4 ngày trước

• 7 phút đọc

Tùy Chỉnh Menu Quản Trị WordPress Không Cần Plugin

Giới thiệu

Bạn có cảm thấy menu quản trị WordPress của mình quá rối rắm? Có những mục mà khách hàng của bạn không bao giờ sử dụng và chỉ làm họ bối rối? Hoặc có thể bạn muốn thêm một liên kết nhanh đến công cụ yêu thích hoặc loại bài viết tùy chỉnh của mình?

Mặc dù các plugin có thể làm điều này chỉ với một cú nhấp chuột, nhưng có một cách mạnh mẽ để tùy chỉnh menu quản trị của bạn bằng cách thêm một vài dòng mã. Không khó như bạn nghĩ! Bằng cách chỉnh sửa tệp functions.php của theme, bạn có thể đổi tên, sắp xếp lại, thêm và thậm chí hạn chế các mục menu.

Hãy cùng tìm hiểu cách điều chỉnh menu quản trị WordPress theo nhu cầu của bạn.

An toàn trước hết!

Trước khi bắt đầu, hãy lưu ý: chúng ta sẽ thêm mã vào tệp functions.php của theme. Một sai sót nhỏ có thể làm hỏng trang web của bạn.

  • Luôn sử dụng Child Theme: Điều này giúp ngăn các thay đổi của bạn bị xóa khi theme được cập nhật.
  • Sao lưu trang web của bạn: Luôn luôn sao lưu trang web của bạn trước khi thực hiện bất kỳ thay đổi mã nào.

Sẵn sàng chưa? Hãy bắt đầu nào.


1. Giới thiệu về functions.php

Tất cả mã của chúng ta sẽ được đưa vào tệp functions.php của child theme. Bạn có thể tìm thấy điều này bằng cách vào Giao diện > Trình chỉnh sửa tệp theme trong bảng điều khiển WordPress của bạn. Chọn child theme của bạn từ menu thả xuống bên phải.

Ngoài ra, bạn có thể truy cập nó qua FTP bằng cách điều hướng đến /wp-content/themes/tên-child-theme-của-bạn/functions.php.

Chúng ta sẽ sử dụng một hook mạnh mẽ của WordPress gọi là admin_menu. Hook này cho phép chúng ta thực hiện các thay đổi ngay trước khi menu quản trị được hiển thị.


2. Cách thay đổi các mục menu hiện có (Tên, Biểu tượng, URL)

Giả sử bạn muốn đổi tên "Bài viết" thành "Bài viết" và cho nó một biểu tượng khác.

Dưới đây là mã bạn sẽ sử dụng:

php Copy
function wpadminify_customize_admin_menu() {
    global $menu;

    // Đổi "Bài viết" thành "Bài viết"
    $menu[5][0] = 'Bài viết'; // Số 5 là vị trí của menu "Bài viết"

    // Đổi biểu tượng cho "Bài viết" (sử dụng Dashicon)
    $menu[5][6] = 'dashicons-book-alt'; // URL đến một biểu tượng tùy chỉnh cũng hoạt động
}

add_action( 'admin_menu', 'wpadminify_customize_admin_menu' );

Cách hoạt động:

global $menu; làm cho mảng menu toàn cầu có sẵn để chúng ta chỉnh sửa.

Số 5 đề cập đến vị trí của mục menu "Bài viết" trong menu quản trị.

[0] là khóa mảng chứa tên menu.

[6] là khóa mảng chứa URL biểu tượng. WordPress có một phông chữ biểu tượng tích hợp gọi là Dashicons.

3. Cách thêm một mục menu tùy chỉnh mới

Bạn muốn thêm một liên kết đến danh mục đầu tư của mình hoặc một công cụ bên ngoài hữu ích như Google Analytics ngay trong menu quản trị? Bạn cũng có thể làm điều đó!

Chúng ta sẽ sử dụng hàm add_menu_page(). Đọc các bình luận bên trong mã và bạn sẽ hiểu rõ hơn. Nếu bạn gặp vấn đề, hãy bình luận và tôi sẽ phản hồi.

php Copy
function wpadminify_add_custom_menu_link() {
    add_menu_page(
        'Google Analytics',      // Tiêu đề trang (tiêu đề của tab trình duyệt)
        'Analytics',             // Văn bản hiển thị trong menu
        'manage_options',        // Quyền hạn cần thiết để xem liên kết này (ví dụ: 'manage_options' cho quản trị viên)
        'https://analytics.google.com/', // URL mà menu này liên kết đến
        '',                      // Hàm xuất nội dung trang (trống vì chúng ta liên kết bên ngoài)
        'dashicons-chart-bar',   // Biểu tượng cho menu (một Dashicon)
        2                        // Vị trí trong menu (2 đặt nó ngay dưới Bảng điều khiển)
    );
}

add_action( 'admin_menu', 'wpadminify_add_custom_menu_link' );

4. Cách hạn chế một menu cho một người dùng hoặc vai trò cụ thể

Đây là nơi sức mạnh thực sự xuất hiện. Giả sử bạn có một vai trò "Khách hàng" và bạn muốn ẩn menu "Công cụ" khỏi tất cả những ai không phải quản trị viên.

Chúng ta có thể sử dụng current_user_can() để kiểm tra vai trò hoặc quyền hạn của người dùng.

Ví dụ 1: Ẩn "Công cụ" cho tất cả người dùng ngoại trừ quản trị viên

php Copy
function wpadminify_remove_menus() {
    // Kiểm tra xem người dùng hiện tại không phải là quản trị viên
    if ( !current_user_can( 'manage_options' ) ) {
        remove_menu_page( 'tools.php' ); // Ẩn menu Công cụ
    }
}

add_action( 'admin_menu', 'wpadminify_remove_menus' ); 

Ví dụ 2: Ẩn "Bài viết" cho một người dùng cụ thể có tên "client_user"

php Copy
function wpadminify_remove_menus_for_user() {
    // Lấy tên đăng nhập của người dùng hiện tại
    $current_user = wp_get_current_user();

    // Kiểm tra xem tên người dùng có phải là 'client_user'
    if ( $current_user->user_login == 'client_user' ) {
        remove_menu_page( 'edit.php' ); // Ẩn menu Bài viết
    }
}

add_action( 'admin_menu', 'wpadminify_remove_menus_for_user' );

Kết hợp tất cả mã lại cho một ví dụ hoàn chỉnh

Dưới đây là cách bạn có thể kết hợp tất cả các kỹ thuật này thành một đoạn mã gọn gàng cho tệp functions.php của bạn.

php Copy
/**
 * Thiết lập menu quản trị tùy chỉnh WPAdminify
 */
function wpadminify_custom_admin_menu_setup() {

    // 1. Đổi tên Bài viết thành Bài viết
    global $menu;
    $menu[5][0] = 'Bài viết';

    // 2. Thêm một liên kết phân tích tùy chỉnh
    add_menu_page(
        'Google Analytics',
        'Analytics',
        'manage_options',
        'https://analytics.google.com/',
        '',
        'dashicons-chart-bar',
        2
    );

    // 3. Ẩn menu Công cụ cho những người không phải là quản trị viên
    if ( !current_user_can( 'manage_options' ) ) {
        remove_menu_page( 'tools.php' );
    }

}
add_action( 'admin_menu', 'wpadminify_custom_admin_menu_setup' );

[Lưu ý: Bạn có thể nhận thấy tôi đã đặt tên WPAdminify trong các hàm, vì tôi cố gắng làm cho nó độc đáo với tên plugin của tôi để nó không xung đột với bảng điều khiển của bạn.]

Kết luận

Và đó là tất cả! Bạn vừa học cách tùy chỉnh menu quản trị WordPress một cách chuyên nghiệp mà không cần dựa vào bất kỳ plugin nào. Giờ đây, bạn có thể đổi tên các mục, thêm các liên kết bên ngoài hữu ích và ẩn các mục menu không nên hiển thị cho người dùng.

Cách tiếp cận này nhẹ nhàng, giúp bạn kiểm soát hoàn toàn, và là một kỹ năng tuyệt vời cho bất kỳ nhà phát triển WordPress nào hoặc chủ sở hữu trang web thông minh.

Hãy nhớ luôn kiểm tra mã của bạn trên một trang thử nghiệm trước và vui vẻ tạo ra một bảng điều khiển WordPress sạch sẽ, hiệu quả hơn cho bản thân và khách hàng của bạn.

Câu hỏi thường gặp

1. Tôi có thể sử dụng đoạn mã này trên bất kỳ theme nào không?
Có, bạn có thể sử dụng mã này trên bất kỳ theme nào, miễn là bạn sử dụng child theme.

2. Điều gì xảy ra nếu tôi làm hỏng mã?
Nếu bạn làm hỏng mã, hãy khôi phục lại bản sao lưu mà bạn đã tạo trước đó.

3. Có cách nào dễ dàng hơn để tùy chỉnh menu không?
Có, nhưng việc sử dụng mã cho phép bạn kiểm soát tối đa mà không cần cài đặt thêm plugin.

Thực hành tốt nhất

  • Luôn kiểm tra mã trên một môi trường thử nghiệm.
  • Đọc tài liệu WordPress để hiểu rõ hơn về các hàm mà bạn đang sử dụng.

Các cạm bẫy phổ biến

  • Quên không sao lưu trước khi thay đổi.
  • Không kiểm tra tính tương thích của mã với các plugin khác.

Mẹo hiệu suất

  • Sử dụng cache để cải thiện tốc độ tải trang quản trị.
  • Giảm thiểu số lượng menu để cải thiện trải nghiệm người dùng.

Khắc phục sự cố

Nếu menu không hiển thị đúng, hãy kiểm tra xem mã có được thêm vào đúng vị trí không và chắc chắn rằng không có lỗi cú pháp nào.

Tài nguyên tham khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào