Khi làm việc với WordPress, bạn có thể đã thấy một vài trạng thái đặc biệt được hiển thị ngay trong danh sách bài viết như “Đang chờ xét duyệt”, “Bảo vệ bằng mật khẩu”, hay “Trang chủ”. Vậy nếu bạn muốn hiển thị trạng thái tùy chỉnh – ví dụ như “Chưa có ảnh đại diện” hay “Trang Giới thiệu” – thì phải làm thế nào?
Bài viết này sẽ hướng dẫn bạn từng bước cách sử dụng hook display_post_states để tùy biến hiển thị trạng thái bài viết hoặc trang trong phần quản trị. Rất hữu ích nếu bạn đang xây dựng site có nhiều loại bài viết đặc biệt hoặc muốn dễ dàng phân loại khi quản lý.
1. Hook display_post_states là gì?
Trong WordPress, display_post_states là một filter hook cho phép bạn thêm nội dung văn bản bên cạnh tiêu đề bài viết trong danh sách bài viết (trang quản trị).
Mặc định, WordPress sử dụng hook này để hiển thị trạng thái như:
- Trang chủ
- Trang bài viết
- Bảo vệ bằng mật khẩu
- Sticky post (Ghim)
Chúng ta có thể tận dụng hook này để thêm trạng thái tùy chỉnh của riêng mình.
2. Cách hiển thị trạng thái tùy chỉnh
Thêm đoạn mã dưới đây vào file functions.php của theme hoặc vào plugin riêng nếu bạn đã có.
add_filter('display_post_states', 'init_custom_post_states', 10, 2);
function init_custom_post_states($states, $post) {
$post_type = get_post_type($post->ID);
// Trạng thái tùy chỉnh cho Page Template
if ($post_type === 'page') {
$template = get_page_template_slug($post->ID);
if ($template === 'template-about.php') {
$states[] = __('Giới thiệu');
}
if ($template === 'template-contact.php') {
$states[] = __('Liên hệ');
}
}
// Trạng thái tùy chỉnh cho bài viết không có ảnh đại diện
if ($post_type === 'post') {
if (!has_post_thumbnail($post->ID)) {
$states[] = __('Chưa có ảnh đại diện');
}
}
return $states;
}
3. Giải thích đoạn mã
display_post_states
Đây là hook được WordPress chạy khi render danh sách bài viết trong admin.
$states
Là mảng chứa các trạng thái hiển thị – bạn có thể thêm phần tử mới vào mảng này.
get_post_type(), get_page_template_slug(), has_post_thumbnail()
Các hàm này dùng để kiểm tra loại bài viết, template đang dùng và tình trạng ảnh đại diện.
4. Ứng dụng thực tế
Giả sử bạn có nhiều trang con sử dụng các template khác nhau như “Giới thiệu”, “Liên hệ”, bạn muốn quản trị viên có thể dễ dàng nhận biết chúng mà không cần bấm vào xem nội dung → thêm trạng thái tùy chỉnh như trên sẽ giúp thao tác quản lý nhanh hơn và trực quan hơn.
Tương tự, nếu bạn đang đăng bài blog nhưng quên ảnh đại diện, trạng thái “Chưa có ảnh đại diện” sẽ giúp bạn dễ rà soát và cập nhật lại.
5. Gợi ý mở rộng
- Hiển thị trạng thái tùy chỉnh cho custom post type
- Thêm điều kiện hiển thị nếu bài viết có hoặc không có taxonomy nào đó
- Hiển thị trạng thái dựa trên meta field hoặc ACF
Kết luận
Hook display_post_states là một công cụ cực kỳ hữu ích khi bạn muốn hiển thị thêm trạng thái tùy chỉnh ngay trong admin WordPress. Không cần plugin bên ngoài, chỉ với vài dòng code, bạn đã có thể cải thiện trải nghiệm quản lý nội dung rõ ràng và hiệu quả hơn.
Chúc các bạn thành công!
Bình luận