2 cách thêm admin notices tùy chỉnh WordPress
Giới Thiệu Về Admin Notices trong WordPress
Admin notices (thông báo admin) là một phần quan trọng của giao diện quản trị WordPress. Chúng được sử dụng để cung cấp thông tin phản hồi cho người dùng quản trị, chẳng hạn như thông báo thành công, cảnh báo hoặc lỗi. Việc thêm admin notices tùy chỉnh cho phép bạn cải thiện trải nghiệm người dùng bằng cách cung cấp thông báo phù hợp và dễ hiểu liên quan đến plugin hoặc theme của bạn.
Bài viết này sẽ hướng dẫn bạn hai cách thêm admin notices tùy chỉnh vào WordPress: sử dụng hook admin_notices và sử dụng lớp (class) tùy chỉnh.
Cách 1: Sử Dụng Hook admin_notices
Hook admin_notices là cách đơn giản nhất để thêm admin notices. Hook này được kích hoạt trên mỗi trang quản trị, cho phép bạn hiển thị thông báo của mình bất cứ khi nào trang quản trị được tải.
Bước 1: Tạo Hàm Callback
Trước tiên, bạn cần tạo một hàm callback để hiển thị thông báo của bạn. Hàm này sẽ nhận một tham số (mặc dù không bắt buộc phải sử dụng tham số này) và in ra HTML cho thông báo.
<?php
function my_custom_admin_notice() {
$class = 'notice notice-success';
$message = __( 'Thông báo thành công tùy chỉnh của bạn!', 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
}
Trong ví dụ này:
$classxác định các lớp CSS cho thông báo. Chúng ta sử dụngnotice notice-successđể tạo một thông báo màu xanh lá cây (thành công). Các lớp khác bao gồmnotice notice-warning(màu vàng),notice notice-error(màu đỏ) vànotice notice-info(màu xanh lam).$messagechứa nội dung của thông báo. Hãy nhớ sử dụng__()để dịch thông báo nếu cần.printfđược sử dụng để in ra HTML cho thông báo. Chúng ta sử dụngesc_attr()để thoát các thuộc tính HTML vàesc_html()để thoát nội dung HTML để ngăn chặn các lỗ hổng bảo mật XSS.
Bước 2: Thêm Callback vào Hook admin_notices
Tiếp theo, bạn cần thêm hàm callback của bạn vào hook admin_notices bằng hàm add_action().
<?php add_action( 'admin_notices', 'my_custom_admin_notice' );
Điều này sẽ gọi hàm my_custom_admin_notice() mỗi khi hook admin_notices được kích hoạt.
Bước 3: Thêm Điều Kiện (Tùy Chọn)
Bạn có thể muốn hiển thị thông báo của mình chỉ trong một số điều kiện nhất định, chẳng hạn như trên một trang quản trị cụ thể hoặc khi một tùy chọn cụ thể được đặt. Để làm điều này, bạn có thể thêm một điều kiện vào hàm callback của mình.
<?php
function my_custom_admin_notice() {
$screen = get_current_screen();
if ( $screen->id == 'edit-post' ) {
$class = 'notice notice-success';
$message = __( 'Thông báo thành công tùy chỉnh của bạn!', 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
}
}
add_action( 'admin_notices', 'my_custom_admin_notice' );
Trong ví dụ này, thông báo chỉ được hiển thị trên trang chỉnh sửa bài viết (edit-post).
Cách 2: Sử Dụng Lớp (Class) Tùy Chỉnh
Sử dụng một lớp tùy chỉnh để quản lý admin notices có thể giúp mã của bạn trở nên có cấu trúc và dễ bảo trì hơn, đặc biệt nếu bạn có nhiều thông báo hoặc logic phức tạp hơn.
Bước 1: Tạo Lớp (Class)
Tạo một lớp để chứa logic cho admin notice của bạn.
<?php
class My_Admin_Notice {
private $message;
private $type;
private $screen_id;
public function __construct( $message, $type = 'success', $screen_id = null ) {
$this->message = $message;
$this->type = $type;
$this->screen_id = $screen_id;
add_action( 'admin_notices', array( $this, 'display_notice' ) );
}
public function display_notice() {
$screen = get_current_screen();
if ( ! empty( $this->screen_id ) && $screen->id != $this->screen_id ) {
return;
}
$class = 'notice notice-' . $this->type;
$message = __( $this->message, 'text-domain' );
printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );
}
}
Trong ví dụ này:
- Lớp
My_Admin_Noticenhận tin nhắn, loại (success, warning, error, info) và ID màn hình tùy chọn trong hàm khởi tạo. - Hàm
display_notice()hiển thị thông báo, kiểm tra ID màn hình (nếu được cung cấp) và sử dụngprintfđể in ra HTML. - Hàm khởi tạo đăng ký hàm
display_noticevào hookadmin_notices.
Bước 2: Khởi Tạo Lớp (Class)
Để sử dụng lớp của bạn, bạn cần khởi tạo nó với thông tin mong muốn.
<?php new My_Admin_Notice( 'Thông báo thành công từ lớp!', 'success' ); new My_Admin_Notice( 'Thông báo lỗi chỉ trên trang bài viết!', 'error', 'edit-post' );
Điều này sẽ tạo hai thông báo:
- Một thông báo thành công (màu xanh lá cây) hiển thị trên tất cả các trang quản trị.
- Một thông báo lỗi (màu đỏ) chỉ hiển thị trên trang chỉnh sửa bài viết.
Ưu Điểm của Việc Sử Dụng Lớp (Class)
- Tính cấu trúc: Mã được tổ chức tốt hơn, đặc biệt khi bạn có nhiều thông báo khác nhau.
- Khả năng tái sử dụng: Dễ dàng tạo các thông báo khác nhau bằng cách khởi tạo lớp với các tham số khác nhau.
- Dễ bảo trì: Việc thay đổi logic thông báo dễ dàng hơn vì tất cả logic đều được gói gọn trong một lớp.
Lời Khuyên và Lưu Ý
- Tránh lạm dụng admin notices: Chỉ sử dụng chúng khi thực sự cần thiết để cung cấp thông tin quan trọng cho người dùng.
- Sử dụng các lớp CSS phù hợp: Sử dụng
notice-success,notice-warning,notice-errorvànotice-infođể truyền đạt ý nghĩa của thông báo một cách rõ ràng. - Thoát dữ liệu: Luôn sử dụng
esc_attr()vàesc_html()để ngăn chặn các lỗ hổng bảo mật XSS. - Dịch nội dung: Sử dụng
__()để dịch nội dung thông báo để hỗ trợ nhiều ngôn ngữ. - Kiểm tra điều kiện: Sử dụng
get_current_screen()và các điều kiện khác để chỉ hiển thị thông báo khi cần thiết.
Bằng cách sử dụng một trong hai phương pháp này, bạn có thể thêm admin notices tùy chỉnh vào WordPress một cách dễ dàng và cải thiện trải nghiệm người dùng của bạn.
- Thêm menu điều hướng vào bài viết WordPress
- Hướng dẫn gửi website WordPress lên Google News
- Chia bài viết WordPress thành nhiều trang
- Gửi email cho tác giả khi bài được đăng WordPress
- Cách yêu cầu hỗ trợ WordPress
- 3 cách thêm đường kẻ ngang trong WordPress
- Hướng dẫn tắt hoàn toàn bình luận WordPress
