Init Recent Comments – Templated, Modern, Minimal

Mô tả

Init Recent Comments là một plugin thân thiện với lập trình viên, cho phép bạn hiển thị các bình luận mới nhất ở bất kỳ đâu qua một shortcode đơn giản. Plugin dùng HTML gọn gàng, CSS tối giản, và các mẫu có thể tùy chỉnh hoàn toàn.

Không widget, không tùy chọn cồng kềnh. Chỉ có mã nhẹ, có thể mở rộng — được tạo cho các site thực tế, với hỗ trợ Block Editor gốc và tích hợp Abilities API cho thế hệ công cụ tự động hóa tiếp theo.

Mục tiêu thiết kế chính:

  • Block Block Editor gốc, mỗi shortcode một block, kèm xem trước trực tiếp
  • Hỗ trợ Abilities API (WordPress 6.9+) cho AI agent và công cụ tự động hóa
  • Hiển thị theo mẫu với hỗ trợ ghi đè từ theme
  • CSS gọn gàng mà bạn có thể tắt hoặc thay thế
  • Kiến trúc sẵn sàng cho REST (bền vững theo thời gian)
  • Không jQuery, không rườm rà

Hoàn hảo cho blog, trang tin tức, hoặc bất kỳ ai muốn có cách tốt hơn để hiển thị các cuộc thảo luận sôi nổi.

Plugin này là một phần của Init Plugin Suite — bộ sưu tập các công cụ WordPress tối giản, nhanh, và hướng tới lập trình viên.

Kho GitHub: https://github.com/brokensmile2103/init-recent-comments

Tính năng

  • Các block Block Editor (Gutenberg): Recent Comments, Recent Reviews, User Recent Comments, User Recent Reviews — mỗi block đều có bản xem trước trực tiếp phía server ngay trong trình soạn thảo
  • Abilities API (WordPress 6.9+): dữ liệu của cả 4 shortcode được công khai dưới dạng ability có thể phát hiện và thực thi qua wp_get_abilities() và REST namespace wp-abilities/v1
  • Shortcode đơn giản: [init_plugin_suite_recent_comments] (bí danh cũ: [init_recent_comments])
  • Shortcode để hiển thị đánh giá gần đây: [init_plugin_suite_recent_reviews] (bí danh cũ: [init_recent_reviews])
  • Shortcode để hiển thị bình luận gần đây của một người dùng cụ thể: [init_plugin_suite_user_recent_comments] (bí danh cũ: [init_user_recent_comments])
  • Shortcode để hiển thị đánh giá gần đây của một người dùng cụ thể: [init_plugin_suite_user_recent_reviews] (bí danh cũ: [init_user_recent_reviews])
  • Hiển thị dựa trên mẫu (comment-item.php, wrapper.php)
  • CSS có thể tắt để dùng thiết kế của theme bạn
  • Không widget, không jQuery, không cồng kềnh frontend
  • Sẵn sàng cho lập trình viên: mở rộng bằng filter, REST, và tải chậm (dự kiến)
  • Sẵn sàng cho dịch thuật (kèm .pot)

Block Editor (Gutenberg)

Bốn block động có sẵn trong danh mục Init Recent Comments riêng trong trình chèn block — không cần dùng shortcode nếu bạn thích làm việc hoàn toàn trong trình soạn thảo:

  • Recent Comments — tương đương với [init_plugin_suite_recent_comments]
  • Recent Reviews — tương đương với [init_plugin_suite_recent_reviews]
  • User Recent Comments — tương đương với [init_plugin_suite_user_recent_comments]
  • User Recent Reviews — tương đương với [init_plugin_suite_user_recent_reviews]

Mỗi block dùng chung chính xác mã hiển thị với shortcode tương ứng, nên việc chuyển đổi giữa Block Editor và shortcode không bao giờ làm thay đổi kết quả hiển thị. Các thiết lập của block ánh xạ trực tiếp tới thuộc tính shortcode, và bản xem trước trực tiếp được hiển thị ngay trong trình soạn thảo khi bạn cấu hình.

Abilities API (WordPress 6.9+)

Trên WordPress 6.9 trở lên, Init Recent Comments đăng ký bốn ability chỉ đọc trong danh mục init-recent-comments — get-recent-comments, get-recent-reviews, get-user-recent-comments, và get-user-recent-reviews — phản ánh chính xác bốn shortcode của plugin. Plugin này hoàn toàn không có hành động ghi nào (đây là plugin hiển thị thuần túy), nên mọi chức năng của nó đều được công khai an toàn. Các ability này có thể được phát hiện và thực thi qua PHP (wp_get_abilities()), và — với các site chọn tham gia — qua REST namespace wp-abilities/v1. Tích hợp này hoàn toàn tùy chọn: trên các phiên bản WordPress cũ hơn 6.9, nó sẽ không làm gì cả và phần còn lại của plugin không bị ảnh hưởng.

Lưu ý về quyền riêng tư: việc tra cứu bình luận của khách bằng user_email thông qua get-user-recent-comments yêu cầu quyền moderate_comments, và get-user-recent-reviews chỉ trả về các đánh giá chưa được duyệt (pending, rejected, …) cho người dùng có quyền manage_options. Tất cả các thành phần khác vẫn giữ chế độ công khai, giống hệt như các shortcode.

Cách sử dụng

Thích làm việc trong Block Editor? Mỗi shortcode bên dưới đều có block tương đương — xem mục “Block Editor (Gutenberg)” ở trên.

Dùng shortcode ở bất kỳ đâu:

[init_plugin_suite_recent_comments number="5" maxheight="400px"]

Đánh giá gần đây:

[init_plugin_suite_recent_reviews number="5"]

Bình luận gần đây của một người dùng cụ thể:

[init_plugin_suite_user_recent_comments user_id="123"]

Đánh giá gần đây của một người dùng cụ thể:

[init_plugin_suite_user_recent_reviews user_id="123"]

Các thẻ cũ [init_recent_comments], [init_recent_reviews], [init_user_recent_comments], và [init_user_recent_reviews] vẫn hoạt động chính xác như trước, để tương thích ngược với nội dung hiện có.

Thuộc tính:

  • number – Tổng số mục hiển thị (mặc định: 5)
  • maxheight – Chiều cao tối đa tùy chọn với cuộn và thanh cuộn ẩn (ví dụ: 300px)
  • paged – Phân trang tùy chọn
  • theme – Sáng hoặc tối (ví dụ: theme="dark")
  • Đối với shortcode người dùng: có thể dùng user_id, user_login, hoặc user_email để nhắm mục tiêu người dùng

Để ghi đè mẫu, tạo thư mục trong theme của bạn:

your-theme/
└── init-recent-comments/
    ├── wrapper.php
    ├── review-wrapper.php
    ├── comment-item.php
    └── review-item.php<h3>Filters for Developers</h3>

Plugin này cung cấp nhiều filter giúp lập trình viên tùy chỉnh hành vi lưu đệm và hiệu năng cho truy vấn bình luận gần đây, đánh giá, và tổng số bình luận.

Theo mặc định, truy vấn bình luận/đánh giá KHÔNG được lưu đệm (TTL = 0) để bình luận mới đăng luôn hiển thị ngay lập tức — đây là chủ ý, vì hầu hết các site dùng plugin này mong muốn độ mới theo thời gian thực. Nếu site của bạn có lưu lượng truy cập lớn và bạn chấp nhận độ trễ ngắn trước khi bình luận mới xuất hiện, bạn có thể tự bật lưu đệm bằng các filter bên dưới (một giá trị như 60 cho 60 giây là điểm khởi đầu hợp lý). Truy vấn tổng số bình luận mặc định dùng TTL 5 phút thay thế, vì số lượng ít nhạy cảm về thời gian hơn.

init_plugin_suite_recent_comments_ttl  

Kiểm soát TTL bộ nhớ đệm (tính bằng giây) cho bình luận gần đây.
Áp dụng cho: Truy vấn Bình luận gần đây
Tham số: int $ttl

init_plugin_suite_recent_comments_query_args  

Cho phép lập trình viên chỉnh sửa hoặc mở rộng các tham số truy vấn WP_Comment trước khi truy vấn chạy.
Áp dụng cho: Truy vấn Bình luận gần đây
Tham số: array $args

init_plugin_suite_recent_reviews_ttl  

Kiểm soát TTL bộ nhớ đệm (tính bằng giây) cho đánh giá gần đây.
Áp dụng cho: Truy vấn Đánh giá gần đây
Tham số: int $ttl

init_plugin_suite_user_recent_comments_ttl  

Kiểm soát TTL bộ nhớ đệm (tính bằng giây) cho bình luận gần đây của một người dùng cụ thể.
Áp dụng cho: [init_user_recent_comments]
Tham số: int $ttl, array $args

init_plugin_suite_user_recent_reviews_ttl  

Kiểm soát TTL bộ nhớ đệm (tính bằng giây) cho đánh giá gần đây của một người dùng cụ thể.
Áp dụng cho: [init_user_recent_reviews]
Tham số: int $ttl, array $args

init_plugin_suite_total_comments_ttl  

Kiểm soát TTL bộ nhớ đệm (tính bằng giây) cho tổng số bình luận đã duyệt theo loại bài viết.
Áp dụng cho: Truy vấn Tổng bình luận
Tham số: int $ttl, array $post_types

init_plugin_suite_total_by_posts_ttl  

Kiểm soát TTL bộ nhớ đệm (tính bằng giây) cho tổng số bình luận đã duyệt trên nhiều ID bài viết.
Áp dụng cho: Truy vấn Tổng theo ID bài viết
Tham số: int $ttl, array $post_ids

init_plugin_suite_recent_comments_visible_reviews  

Lọc danh sách đánh giá sau khi các đánh giá trên những bài viết không công khai (nháp, chờ duyệt, riêng tư, đã xóa) đã bị xóa bỏ.
Áp dụng cho: Recent Reviews và User Recent Reviews
Tham số: array $visible, array $reviews

Giấy phép

Plugin này được cấp phép theo GPLv2 hoặc phiên bản mới hơn.
Bạn có toàn quyền sử dụng, chỉnh sửa, và phân phối lại theo cùng giấy phép.

Ảnh màn hình

Khối

Plugin này cung cấp 4 khối.

  • User Recent Reviews Insert the most recent reviews submitted by a specific user. Requires Init Review System.
  • Recent Comments Insert the most recent approved comments site-wide.
  • Recent Reviews Insert the most recent approved reviews site-wide. Requires Init Review System.
  • User Recent Comments Insert the most recent approved comments by a specific user.

Cài đặt

  1. Tải thư mục plugin lên /wp-content/plugins/
  2. Kích hoạt qua Plugins Init Recent Comments
  3. Dùng shortcode [init_plugin_suite_recent_comments] trong bất kỳ trang hoặc widget nào
  4. Tùy chọn: Vào Settings Init Recent Comments để tắt CSS có sẵn

Hỏi đáp

Tôi có thể tắt CSS của plugin không?

Có! Vào Settings Init Recent Comments và đánh dấu chọn ô để tắt kiểu dáng có sẵn.

Tôi có thể tùy chỉnh HTML của bình luận không?

Chắc chắn rồi. Sao chép templates/comment-item.php và templates/wrapper.php vào theme của bạn để ghi đè kết quả hiển thị.

Plugin này có làm chậm site của tôi không?

Không. Nó sử dụng get_comments() với các giá trị mặc định hợp lý, tải các bài viết, người dùng và bình luận cha liên quan theo lô (không thực hiện truy vấn cho từng mục), và không thêm JavaScript ở giao diện phía người dùng (front-end).

Đánh giá

Không có đánh giá nào cho plugin này.

Người đóng góp & Lập trình viên

“Init Recent Comments – Templated, Modern, Minimal” là mã nguồn mở. Những người sau đã đóng góp vào plugin này.

Những người đóng góp

“Init Recent Comments – Templated, Modern, Minimal” đã được dịch qua 1 ngôn ngữ. Cảm ơn những người tham gia dịch vì đóng góp của họ.

Dịch “Init Recent Comments – Templated, Modern, Minimal” sang ngôn ngữ của bạn.

Muốn tham gia phát triển?

Duyệt code, check out SVN repository, hoặc theo dõi nhật ký phát triển qua RSS.

Nhật ký thay đổi

2.0.1 – 2 Tháng 10, 2026

  • Bảo mật: Bình luận gần đây (shortcode, block và ability) giờ đây chỉ bao gồm bình luận trên các bài viết đã xuất bản — tương tự như quy tắc của widget Recent Comments mặc định trong WordPress core. Trước đây, các bình luận đã duyệt trên bài viết riêng tư hoặc bài nháp (cùng tiêu đề của các bài viết đó) có thể bị hiển thị công khai. Truy vấn vẫn có thể được tùy chỉnh thông qua init_plugin_suite_recent_comments_query_args / init_plugin_suite_user_recent_comments_query_args
  • Bảo mật: Các đánh giá gần đây (từ Init Review System) giờ đây sẽ bỏ qua các đánh giá mà bài viết của chúng không hiển thị công khai (nháp, chờ duyệt, riêng tư, đã xóa), đảm bảo tiêu đề bài viết, đường dẫn và nội dung đánh giá không bị lộ. Bộ lọc mới init_plugin_suite_recent_comments_visible_reviews cho phép các nhà phát triển điều chỉnh kết quả này
  • Bảo mật (Abilities API): get-user-recent-comments chỉ cho phép tra cứu bình luận của khách bằng user_email đối với người dùng có quyền kiểm duyệt bình luận, nhờ đó điểm cuối (endpoint) công khai không còn bị lợi dụng để khớp địa chỉ email với người bình luận. Việc tra cứu theo user_id / user_login giữ nguyên không đổi
  • Bảo mật (Abilities API): get-user-recent-reviews chỉ trả về các đánh giá chưa được duyệt (pending, rejected, …) cho người dùng có quyền manage_options (cùng quyền mà Init Review System sử dụng để quản lý đánh giá). Các đánh giá đã duyệt vẫn công khai
  • Sửa lỗi: Thuộc tính maxheight (và cài đặt “Max Height” của block) hiện đã thực sự được áp dụng (ví dụ: maxheight="300px"). Trước đây giá trị này bị bỏ qua và danh sách luôn giới hạn tối đa ở 650px. Các giá trị không đúng định dạng số + đơn vị (px, em, rem, vh, vw, %) sẽ giữ nguyên hành vi 650px cũ
  • Sửa lỗi: Tùy chọn “Tắt CSS tích hợp” (Disable built-in CSS) giờ đây đã áp dụng cho cả bốn block — trước đó trang sử dụng block vẫn tải bảng kiểu (stylesheet) của plugin ngay cả khi tùy chọn này được bật
  • Sửa lỗi: Đường dẫn đánh giá bị mã hóa đặc biệt trùng lặp (double-escaped), làm hỏng các URL bài viết có chứa chuỗi truy vấn (query string, ví dụ: & trong liên kết tĩnh mặc định)
  • Sửa lỗi: Giá trị thời gian tương đối (“time ago”) giờ đây được tính toán từ dấu thời gian GMT thay vì mẫu đã lỗi thời current_time( 'timestamp' ), giúp đảm bảo tính chính xác trên các múi giờ khác nhau và giờ mùa hè (DST)
  • Sửa lỗi: Các nút Copy / Close và nhãn “Shortcode Preview” trong Trình tạo Shortcode giờ đây đã được dịch (trước đó script đọc sai đối tượng i18n), tính năng Sao chép cũng hoạt động trên màn hình quản trị không sử dụng HTTPS, và các nhãn được chèn dưới dạng văn bản thay vì HTML — đã đồng bộ với trình tạo của Init Review System 2.0.1
  • Sửa lỗi: Các shortcode người dùng không còn để lại bộ đệm đầu ra (output buffer) chưa đóng khi không tìm thấy tệp template
  • Sửa lỗi: Bộ làm sạch dữ liệu cài đặt (sanitizer) giờ đây ghi nhận chính xác giá trị disable_css bằng 0 khi được thiết lập qua lập trình
  • Sửa lỗi: Script Block Editor giờ đây đã khai báo phụ thuộc wp-data
  • Hiệu năng: Bài viết, người dùng và bình luận cha hiện được tải theo lô trước khi hiển thị — chỉ mất khoảng 6 truy vấn cơ sở dữ liệu thay vì ~33 cho 10 bình luận (và 5 thay vì ~32 cho 10 đánh giá) trên các trang web không dùng bộ đệm đối tượng (persistent object cache)
  • Hiệu năng: Các tệp giao diện (template) được xác định vị trí một lần cho mỗi yêu cầu thay vì mỗi lần cho từng mục
  • Hiệu năng: Khi bật bộ nhớ đệm (caching) thông qua bộ lọc TTL, danh sách lưu đệm giờ đây sẽ tự động hủy hiệu lực khi có thay đổi về bình luận, bài viết hoặc đánh giá (sử dụng last_changed của WordPress và phiên bản bộ đệm của Init Review System), giúp các bình luận mới hiển thị ngay lập tức thay vì phải chờ hết hạn TTL
  • Chất lượng mã nguồn: Tất cả các tệp PHP hiện tuân thủ Chuẩn viết mã của WordPress (WPCS 3), đồng bộ với các plugin khác trong Init Plugin Suite
  • i18n: Đã thêm các chuỗi mới vào tệp .pot và bản dịch tiếng Việt

2.0.0 – 4 tháng 8, 2026

  • Mới: Hỗ trợ Abilities API (WordPress 6.9+): đăng ký bốn ability chỉ đọc trong danh mục init-recent-comments — get-recent-comments, get-recent-reviews, get-user-recent-comments, và get-user-recent-reviews — phản ánh chính xác cả bốn shortcode. Plugin này không có hành động ghi nào, nên mọi dữ liệu của nó đều được công khai an toàn. Có thể phát hiện và thực thi qua PHP, wp_get_abilities(), và — khi site chọn tham gia — qua REST namespace wp-abilities/v1. Hoàn toàn tùy chọn và tương thích ngược: trên các phiên bản WordPress cũ hơn 6.9, tích hợp này sẽ không làm gì cả
  • Mới: Hỗ trợ Block Editor (Gutenberg): bốn block động, được nhóm trong danh mục block Init Recent Comments riêng (thay vì danh mục “Widgets” chung chung) — Recent Comments, Recent Reviews, User Recent Comments, và User Recent Reviews, khớp với bốn shortcode hiện có. Mỗi block được đăng ký qua block.json (với tệp PHP render.php kết nối qua trường "render", WP 6.1+) gọi chính xác cùng hàm shortcode như shortcode tương ứng của nó — không lặp lại logic hiển thị, kết quả luôn khớp nhau. Tích hợp trình soạn thảo là một tệp JavaScript thuần, không cần bước build, sử dụng wp.serverSideRender để xem trước trực tiếp ngay trong trình soạn thảo
  • Thay đổi: Requires at least được nâng từ 5.5 lên 6.9 để hỗ trợ tích hợp Abilities API. Requires PHP vẫn giữ nguyên 7.4
  • Đã kiểm tra đến: 7.1

1.5 – 21 tháng 7, 2026

  • Trình tạo Shortcode trong trang cài đặt quản trị giờ tạo ra các shortcode có tiền tố ([init_plugin_suite_recent_comments], [init_plugin_suite_recent_reviews], [init_plugin_suite_user_recent_comments], [init_plugin_suite_user_recent_reviews]) theo mặc định; các thẻ cũ vẫn được hỗ trợ đầy đủ
  • Đã cập nhật tài liệu để dùng shortcode có tiền tố làm ví dụ chính, với các thẻ cũ được ghi chú là bí danh tương thích ngược
  • Quy trình gỡ cài đặt giờ xóa đáng tin cậy tùy chọn cài đặt của plugin
  • Đã ghi rõ hành vi lưu đệm mặc định (TTL = 0 cho bình luận/đánh giá) trong mục Filter dành cho lập trình viên
  • Dọn dẹp mã nội bộ để dễ đọc và dễ bảo trì

1.4 – 5 tháng 11, 2025

  • Giới thiệu các shortcode mới dành riêng cho người dùng:
    • [init_plugin_suite_user_recent_comments] — hiển thị bình luận gần đây do một người dùng cụ thể thực hiện
    • [init_plugin_suite_user_recent_reviews] — hiển thị đánh giá gần đây do một người dùng cụ thể thực hiện
    • Duy trì tương thích ngược: [init_user_recent_comments] và [init_user_recent_reviews]
  • Cả hai shortcode đều tái sử dụng hệ thống mẫu hiện có (wrapper.php / review-wrapper.php), đảm bảo giao diện nhất quán
  • Hỗ trợ đầy đủ phân trang, chế độ theme, chiều cao tối đa, và ghi đè tham số truy vấn qua filter
  • Đã thêm các hàm hỗ trợ mới để lấy dữ liệu người dùng:
    • init_plugin_suite_recent_comments_get_user_comments()
    • init_plugin_suite_recent_comments_get_user_reviews()
  • Đã triển khai nhóm bộ nhớ đệm riêng cho bình luận người dùng & đánh giá người dùng
    • TTL có thể tùy chỉnh hoàn toàn qua filter (init_plugin_suite_user_recent_comments_ttl, init_plugin_suite_user_recent_reviews_ttl)
  • Đã cập nhật mẫu mục đánh giá:
    • Hiển thị tên và ảnh đại diện người đánh giá được xác định từ user_id thay vì dựa vào author_name không tồn tại
    • Hỗ trợ dự phòng cho người đánh giá ẩn danh
  • Cải tiến nội bộ và dọn dẹp để mã đáng tin cậy và dễ bảo trì hơn

1.3 – 4 tháng 11, 2025

  • Đã thêm filter mới init_plugin_suite_recent_comments_query_args cho phép lập trình viên chỉnh sửa hoặc mở rộng tham số truy vấn bình luận trước khi chạy get_comments()
  • Cải thiện hàm lấy bình luận gần đây:
    • Hỗ trợ ghi đè tham số truy vấn qua filter (ví dụ: lọc theo post_type, thay đổi number, bao gồm meta_query, v.v.)
    • Duy trì tương thích ngược đầy đủ
  • Cập nhật giao diện cho ngữ cảnh Trả lời:
    • Các mục bình luận gần đây giờ hiển thị “Đang trả lời {Tác giả}” khi bình luận có bình luận cha
    • Đã thêm kiểu dáng CSS tối giản (không xâm lấn, kế thừa nền của khung chứa)
  • Tinh chỉnh mã nguồn:
    • Dọn dẹp nội bộ nhỏ để dễ đọc và dễ bảo trì
    • Đặt tên filter nhất quán trên các tính năng để khớp với chuẩn tiền tố của plugin

1.2 – 12 tháng 10, 2025

  • Tăng cường tính linh hoạt lưu đệm cho các hàm hiện có:
    • Đã thêm hỗ trợ filter TTL cho init_plugin_suite_recent_comments_get_comments()
    • Đã thêm hỗ trợ filter TTL cho init_plugin_suite_recent_comments_get_reviews()
    • Đã thêm hỗ trợ filter TTL cho init_plugin_suite_recent_comments_get_total_comments()
  • Giới thiệu hàm hỗ trợ mới init_plugin_suite_recent_comments_get_total_by_posts() để đếm tổng số bình luận đã duyệt trên nhiều ID bài viết
  • Đã tách nhóm bộ nhớ đệm cho tổng số bình luận (init_comment_totals) để cải thiện cách ly bộ nhớ đệm và hiệu năng
  • Lập trình viên giờ có thể tùy chỉnh thời gian lưu đệm qua filter
  • Giá trị TTL mặc định không thay đổi (0 cho bình luận/đánh giá, 5 phút cho tổng số)
  • Tối ưu nội bộ nhỏ để ổn định và nhất quán hơn

1.1 – 1 tháng 10, 2025

  • Đã thêm shortcode mới [init_recent_reviews] để hiển thị đánh giá gần đây
  • Giới thiệu các shortcode có tiền tố [init_plugin_suite_recent_comments] và [init_plugin_suite_recent_reviews] để nhất quán tên gọi hơn
  • Duy trì tương thích ngược: các shortcode cũ [init_recent_comments] và [init_recent_reviews] vẫn hoạt động
  • Đã thêm hỗ trợ ghi đè mẫu cho khung bao đánh giá (init-recent-comments/review-wrapper.php)
  • Hợp nhất cách xử lý CSS và tùy chọn trên cả shortcode bình luận lẫn đánh giá

1.0 – 16 tháng 6, 2025

  • Phát hành lần đầu
  • Shortcode tĩnh [init_recent_comments]
  • Trang cài đặt cơ bản để bật/tắt CSS
  • Hỗ trợ ghi đè mẫu
  • CSS gọn gàng với tùy chọn tắt