Init Review System – Plugin đánh giá đơn giản, đẹp và mạnh mẽ cho WordPress

Phiên bản: 1.16 English version

Init Review System – Plugin đánh giá đơn giản, đẹp và mạnh mẽ cho WordPress
Init Review System là một plugin đánh giá nhẹ, dễ dùng, và được thiết kế dành riêng cho các nhà phát triển WordPress hiện đại. Plugin này cho phép người dùng chấm điểm bài viết thông qua giao diện trực quan với ngôi sao, đồng thời tự động tính điểm trung bình và hiển thị theo dạng schema chuẩn SEO.

Điểm đặc biệt của plugin là không yêu cầu đăng nhập, không dùng cookie, không lưu dữ liệu phức tạp – mà chỉ sử dụng localStorage để theo dõi lượt vote trên từng thiết bị. Tất cả được xử lý bằng REST API chuẩn WordPress, đảm bảo tính mở rộng và hiệu năng.

Những điểm nổi bật

  • Khối vote 5 sao hiển thị ở frontend
  • Hỗ trợ đánh giá theo nhiều tiêu chí (multi-criteria) – tối đa 5 mục
  • Điểm trung bình tự động tính và hiển thị đẹp, kèm schema SEO
  • Shortcode chèn ở bất kỳ đâu bạn muốn, dễ tích hợp vào theme hoặc block
  • Có thể tự động chèn trước/sau nội dung hoặc form bình luận
  • Hỗ trợ schema.org (AggregateRating) chuẩn SEO, riêng cho cả single và multi-criteria
  • Dùng localStorage để theo dõi người đã vote, không cần đăng nhập
  • Không sử dụng jQuery, UI gọn gàng và responsive, kế thừa style từ theme

Shortcode sử dụng

1. Khối đánh giá 5 sao:

[init_review_system]

2. Hiển thị điểm trung bình (readonly):

[init_review_score]

3. Đánh giá đa tiêu chí (vote + hiển thị):

[init_review_criteria]

4. Thanh phản ứng (emoji-based reactions):

[init_reactions]

Thuộc tính hỗ trợ:

  • id – ID bài viết (mặc định: bài hiện tại)
  • icontrue hoặc false (hiển thị icon ngôi sao – áp dụng cho [init_review_score])
  • subtrue hoặc false (hiển thị “/5” – áp dụng cho [init_review_score])
  • class – CSS class tùy chỉnh (áp dụng cho tất cả shortcode)
  • hide_if_empty – Ẩn nếu chưa có lượt vote
  • schema – Bật/tắt xuất JSON-LD schema (áp dụng cho [init_review_system][init_review_criteria])
  • per_page – Số lượng review hiển thị trong danh sách (áp dụng cho [init_review_criteria])
  • csstrue hoặc false (tự động enqueue CSS cho Reactions Bar – áp dụng cho [init_reactions])

Tùy chọn nâng cao

Trong phần Settings, bạn có thể:

  • Bật tùy chọn chỉ cho người đăng nhập được vote
  • Bật chế độ kiểm tra IP nghiêm ngặt (mỗi IP chỉ vote được 1 lần trong khoảng thời gian ngắn)
  • Cấu hình vị trí hiển thị tự động: trước/sau nội dung hoặc form bình luận
  • Tùy chỉnh nhãn của từng tiêu chí trong hệ thống multi-criteria
  • Dùng shortcode builder để tạo mã nhanh mà không cần nhớ cú pháp

Tích hợp REST API

Plugin sử dụng endpoint REST chuẩn để lưu dữ liệu vote:

/wp-json/initrsys/v1/vote

Có thể gọi từ client-side hoặc tích hợp sâu với các hệ thống khác.

Tối ưu cho nhà phát triển

Init Review System hỗ trợ nhiều filteraction để bạn dễ dàng mở rộng, tùy biến logic vote, định dạng schema, hoặc hiển thị điểm ở nơi khác.

Một số filter tiêu biểu:

  • init_plugin_suite_review_system_get_criteria_labels – thay đổi nhãn tiêu chí
  • init_plugin_suite_review_system_schema_type – đổi kiểu schema
  • init_plugin_suite_review_system_schema_data – tùy biến dữ liệu JSON-LD

Đây là plugin được viết tối giản nhưng cực kỳ dễ mở rộng cho mọi project thực tế.

Kết luận

Nếu bạn đang cần một plugin đánh giá cho WordPress mà:

  • Không muốn cài những plugin nặng, nhiều tính năng thừa
  • Muốn kiểm soát logic hiển thị và luồng xử lý
  • Ưu tiên tốc độ, bảo mật và khả năng mở rộng

Thì Init Review System là lựa chọn phù hợp để triển khai trong mọi dự án hiện đại.

Đánh giá

4.9/5 (19)

Changelog

  • 1.16 – Server-render Review Item
    • Sửa lỗi Load More hiển thị sai avatar và tên người dùng — thông tin giờ được resolve từ server cho từng review.
    • Sửa lỗi review sau khi gửi render HTML cứng không tương thích với custom template.
    • Tách review-item.php thành template độc lập có thể ghi đè — đặt tại your-theme/init-review-system/review-item.php để tùy chỉnh.
    • Các REST endpoint (get-criteria-reviews, submit-criteria-review) giờ server-render từng review item và trả về field html; JS chỉ inject, không còn tự build DOM.
    • Thêm helper init_plugin_suite_review_system_get_criteria_by_post_id() để đọc danh sách tiêu chí từ cấu hình plugin.
    • Thêm helper init_plugin_suite_review_system_get_review_by_id() để lấy một review theo ID.
    • Xóa hàm JS insertNewReview() không còn được sử dụng.
  • 1.15 – Giới hạn per_page & Cache TTL tùy chọn
    • Giới hạn tối đa $per_page = 100 ở REST endpoint lấy danh sách review, tránh query quá tải.
    • Giới thiệu filter init_plugin_suite_review_system_ttl (mặc định 0) để bật object cache tùy chọn.
    • Khi TTL > 0, kết quả truy vấn review và tổng số review được cache qua wp_cache_set với group init_review_system.
    • Việc invalidate cache do developer tự xử lý qua action hook init_plugin_suite_review_system_after_insert.
  • 1.14 – Chuẩn hóa xếp hạng đánh giá (Bayesian Weighted Rating)
    • Giới thiệu cơ chế Bayesian Weighted Rating để xếp hạng đánh giá chính xác và công bằng hơn:
      • Khắc phục hoàn toàn hiện tượng ít vote nhưng điểm cao leo top.
      • Truyện có nhiều lượt đánh giá sẽ được ưu tiên đúng theo độ tin cậy.
    • Bổ sung meta key mới _init_review_weighted:
      • điểm xếp hạng chính thức dùng cho query và sorting.
      • Được tính ngay khi người dùng vote (on-write), không tính lúc query.
    • Cải tiến kiến trúc dữ liệu đánh giá:
      • Tách bạch rõ ràng giữa raw data (total, count, avg) và derived data (weighted score).
      • Plugin trở thành nguồn dữ liệu duy nhất cho hệ thống xếp hạng.
    • Tối ưu hiệu năng & độ ổn định:
      • Điểm trung bình toàn hệ thống (global average) được cache bằng transient.
      • Tự động invalidate cache khi có lượt vote mới, tránh dữ liệu cũ.
    • Mở rộng cho developer:
      • Hook init_plugin_suite_review_system_after_vote được nâng cấp, truyền thêm weighted score.
      • Filter init_plugin_suite_review_system_min_votes_threshold cho phép tùy chỉnh ngưỡng vote tối thiểu.
    • Không có thay đổi giao diện hoặc hành vi frontend.
    • Hoàn toàn backward compatible với REST API và dữ liệu hiện tại.
  • 1.13 – Bổ sung Dark Mode cho Reactions Bar
    • Thêm modifier class .init-reaction-bar.dark để bật Dark Mode cho Reactions Bar.
    • Cải thiện độ tương phản emoji, số lượng và nhãn reaction trên nền tối.
    • Tinh chỉnh trạng thái hover, active và disabled khi ở Dark Mode.
    • Nâng cấp CSS thuần, không ảnh hưởng logic, layout hay JavaScript hiện tại.
  • 1.12 – Chống spam click khi đánh giá (Anti Double-Submit)
    • Thêm lớp bảo vệ chống spam click trên widget đánh giá 5 sao:
      • Giới thiệu state mới: isSubmitting – khóa thao tác trong lúc gửi đánh giá.
      • Ngăn người dùng bấm siêu nhanh dẫn tới nhiều request cùng lúc.
      • Giữ nguyên toàn bộ logic hiện có: single-click, double-click confirm, pending .hovering.
    • Cải thiện độ ổn định frontend:
      • Đảm bảo mỗi lần chỉ gửi 01 request duy nhất.
      • Nếu API lỗi: widget tự mở khóa – cho phép vote lại ngay, không bị kẹt.
    • Hoàn toàn backward compatible:
      • Không thay đổi REST API / database / logic server-side.
      • Không ảnh hưởng localStorage, highlight logic, hay lớp .init-review-disabled.
  • 1.11 – Review theo user + Pagination
    • Thêm API/hàm lấy review theo user_id:
      • Hàm mới: init_plugin_suite_review_system_get_reviews_by_user_id()
      • Hỗ trợ phân trang: $paged$per_page như query theo post.
      • Tự động unserialize criteria_scores để dùng trực tiếp trên UI.
    • Lọc và đảm bảo dữ liệu hợp lệ:
      • Tự động JOIN với bảng wp_posts để loại bỏ review mồ côi.
      • Chỉ trả về review còn tồn tại post tương ứng.
    • Thêm hàm tính tổng số trang review theo user:
      • Hàm mới: init_plugin_suite_review_system_get_total_pages_by_user_id()
      • Trả về tổng số trang dựa trên $per_page (tối thiểu luôn là 1 để không vỡ UX).
    • Chuẩn hóa & bảo mật:
      • Sanitize tham số đúng chuẩn: absint() + max().
      • Tất cả SQL dùng $wpdb->prepare() — không có raw SQL.
      • Full WPCS compliant, không lỗi PHPCS.
  • 1.10 – Chỉnh điểm thủ công + Reset điểm (Admin Metabox)
    • Thêm metabox chỉnh điểm đánh giá ngay trong editor của bài viết:
      • Cho phép chỉnh Average (0–5)Votes (số lượt đánh giá).
      • Total được tính tự động = Avg × Votes (làm tròn 2 số).
      • UI dạng stat chips (Avg / Votes / Total): gọn, đẹp, trực quan.
    • Điều kiện hiển thị:
      • Chỉ hiển thị khi bài viết đã có điểm đánh giá.
      • Không có điểm → không đăng ký metabox (UI sạch, không vướng mắt).
    • Phân quyền & bảo mật:
      • Chỉ user có quyền edit_others_posts (tức Editor trở lên) mới thấy và chỉnh được.
      • Kiểm tra quyền trong save_post ngăn POST trái phép.
      • Bảo vệ bằng nonce đầy đủ.
    • Chuẩn hoá mã & WPCS:
      • Không dùng <style> — toàn bộ dùng inline-style đúng chuẩn WordPress admin.
      • Escape toàn bộ output bằng esc_html() / esc_attr().
      • Input từ $_POST được sanitize đúng chuẩn: sanitize_text_field( wp_unslash() ).
      • Pass PHPCS hoàn toàn: không cảnh báo OutputNotEscaped hay InputNotSanitized.
  • 1.9 – Double-Click Rating Confirmation
    • Thêm tính năng double-click để xác nhận đánh giá (chống bấm nhầm).
      • Nhấn lần đầu → vào trạng thái pending, highlight bằng class .hovering.
      • Nhấn lần hai → xác nhận và gửi đánh giá qua REST API.
      • Không dùng popup, không alert — pure action UI.
    • Trang cài đặt:
      • Thêm tuỳ chọn mới: Require double-click to rate.
      • Cho phép admin bật/tắt cơ chế xác nhận khi đánh giá.
    • Cập nhật JavaScript (logic tinh gọn, không phá flow cũ):
      • Giữ nguyên logic vote và tracking bằng localStorage.
      • .hovering không bị xoá bởi sự kiện mouseleave khi đang chờ click lần 2.
      • Pending tự động reset sau 1.2s để tránh lock UI.
    • Không có breaking changes:
      • Single-click vẫn hoạt động như cũ nếu tắt tính năng double-click.
      • Không ảnh hưởng database hoặc REST endpoint.
  • 1.8 – Review Pagination & Orphan Filter
    • Cập nhật hàm init_plugin_suite_review_system_get_reviews_by_post_id():
      • Khi $post_id = 0, các review không còn post tương ứng (orphan) sẽ tự động bị loại bỏ.
      • Áp dụng cho tất cả post type (CPT) – đảm bảo dữ liệu review luôn đồng bộ và hợp lệ.
    • Nâng cấp shortcode [init_review_criteria]:
      • Thêm thuộc tính mới paged để hỗ trợ phân trang review.
      • Hàm gọi nội bộ cập nhật: truyền $paged động vào init_plugin_suite_review_system_get_reviews_by_post_id().
      • Cập nhật tài liệu shortcode – bổ sung mô tả cho thuộc tính paged.
    • Dọn dẹp code nhẹ:
      • Đồng bộ lại tham số và comment trong file shortcodes.php.
      • Đảm bảo tương thích hoàn toàn với các phiên bản trước của Init Plugin Suite.
  • 1.7 – Moderation & UX nâng cao
    • Thêm hệ thống kiểm duyệt nội dung review:
      • Chặn từ/cụm từ cấm (banned words / banned phrases).
      • Phát hiện review không có khoảng trắng hoặc lặp từ quá nhiều.
      • Trả về mã lỗi REST API rõ ràng (banned_word_detected, banned_phrase_detected, no_whitespace, excessive_repetition).
    • Cập nhật trang cài đặt:
      • Thêm checkbox bật/tắt JS Precheck.
      • Thêm 2 textarea để cấu hình danh sách từ và cụm từ cấm.
    • Cải thiện UX modal review:
      • Bắt buộc chấm đủ tất cả tiêu chí trước khi submit.
      • Hiển thị thông báo lỗi/thành công ngay dưới nút Submit.
      • Highlight đỏ các tiêu chí chưa được chấm điểm.
    • Cập nhật JavaScript:
      • Đồng bộ rule kiểm duyệt cơ bản (whitespace + repetition) với backend qua wp_localize_script.
      • Mapping lỗi REST API sang i18n, thông báo hiển thị trực quan.
    • CSS mới:
      • .init-review-inline-msg cho thông báo inline (light/dark mode).
      • .init-review-criteria-error để viền đỏ tiêu chí chưa chọn.
    • Bổ sung filter cho developer:
      • init_plugin_suite_review_system_min_len_for_ws_check
      • init_plugin_suite_review_system_repetition_threshold
  • 1.6 – Reactions bảo mật & Hoàn thiện module
    • Endpoint /reactions/toggle giờ bắt buộc đăng nhập: kiểm tra is_user_logged_in() + nonce.
    • Cập nhật REST API: permission_callback của /reactions/toggle chỉ cho phép user đã login.
    • Shortcode [init_reactions]: thuộc tính require_login luôn luôn true, thống nhất frontend.
    • Refactor JavaScript:
      • Loại bỏ hoàn toàn fallback guest/localStorage (không còn anonymous reactions).
      • Giữ nguyên trạng thái disabled ban đầu, đảm bảo nút khách luôn không bấm được.
      • Sửa lỗi: guest nút bị re-enable sau khi gọi API.
    • Cập nhật CSS: thêm style .is-disabled, giữ emoji + số lượt hiển thị rõ ràng, chỉ làm mờ giao diện nút.
    • Cải thiện accessibility: các nút phản ứng cập nhật aria-pressed chính xác và hỗ trợ trạng thái is-active.
    • Dọn dẹp code: xoá bỏ logic cũ cho guest, đơn giản hóa quản lý state.
  • 1.5 – Tổng lượt cảm xúc & Cập nhật trực tiếp
    • Thêm hiển thị tổng lượt cảm xúc ngay dưới “Bạn thấy sao?”
    • Giới thiệu id riêng cho số tổng: irs-total-reactions-{post_id} (hỗ trợ JS)
    • Cập nhật JavaScript: tổng lượt cảm xúc thay đổi tức thì khi người dùng bấm phản ứng
    • Bổ sung CSS cho .init-reaction-total (khoảng cách, độ đậm, dễ đọc)
    • Cải thiện accessibility với aria-live="polite" để screen reader cập nhật
    • Bổ sung chú thích dịch (translators comment) cho chuỗi “%s reaction(s)”
    • Dọn dẹp code nhỏ và cải thiện tính nhất quán
  • 1.4 – Reactions System
    • Giới thiệu Reactions System: hệ thống phản ứng bằng emoji (👍 😄 😍 😯 😠 😢).
    • Thêm shortcode [init_reactions] và template reactions-bar.php để hiển thị thanh phản ứng.
    • Lưu trữ phản ứng kép: vừa trong post meta (tổng số), vừa trong bảng riêng init_reactions (map user ↔ post).
    • Thân thiện với khách (guest-friendly): hoạt động không cần đăng nhập, theo dõi qua localStorage.
    • Bổ sung filter cho developer:
      • init_plugin_suite_review_system_get_reaction_types
      • init_plugin_suite_review_system_reaction_meta_key
    • Thêm cài đặt trong admin: tùy chọn tự động chèn Reactions Bar trước form bình luận (mặc định tắt).
    • Bổ sung item init_reactions vào Shortcode Builder với thuộc tính id, class, css.
    • Refactor nội bộ: tách các hàm lõi liên quan đến reaction, tạo bảng tự động bằng dbDelta() không gây lỗi.
  • 1.3 – Quản lý đánh giá toàn diện
    • Tái cấu trúc giao diện admin: chuyển từ submenu Settings sang menu riêng với icon ngôi sao.
    • Thêm hệ thống quản lý review toàn diện với khả năng lọc và thao tác hàng loạt.
    • Triển khai quy trình duyệt review: quản lý trạng thái Pending / Approved / Rejected.
    • Nâng cấp dashboard admin với thống kê review, chức năng tìm kiếm và phân trang.
    • Bổ sung hành động cho từng review: duyệt, từ chối, xóa kèm bảo mật nonce đầy đủ.
    • Tích hợp thao tác hàng loạt cho phép quản lý nhiều review cùng lúc.
    • Tạo trang quản lý review riêng biệt với hiển thị chi tiết nội dung và thông tin user.
    • Tối ưu query database: dùng prepared statements và tuân thủ chuẩn PHPCS.
    • Thêm script quản lý review chỉ dành cho admin, enqueue theo chuẩn WordPress.
    • Refactor kiến trúc plugin để dễ mở rộng và duy trì lâu dài.
  • 1.2 – Chuẩn hóa bảo mật
    • Chuẩn hóa toàn bộ đầu ra với esc_html(), esc_attr()wp_kses() để đảm bảo an toàn hiển thị.
    • Bảo vệ REST API: kiểm tra đăng nhập + nonce khi bật chế độ yêu cầu login.
    • Thêm uninstall.php để xóa toàn bộ tùy chọn khi người dùng gỡ plugin.
    • Hoàn thiện readme.txt để hiển thị mô tả plugin rõ ràng và nổi bật trên WordPress.org Directory.
    • Thêm mục == Filters for Developers == – liệt kê chi tiết toàn bộ filter, action và hook mở rộng.
    • Thêm file README.md riêng cho GitHub với mô tả kỹ thuật, REST API, filter, và hướng dẫn cài đặt.
    • Refactor lại UI trang cấu hình: làm rõ nhãn, gợi ý mô tả, nhóm cài đặt dễ hiểu hơn.
    • Chuẩn hóa logic xử lý shortcode để dễ bảo trì và mở rộng.
  • 1.1 – Hỗ trợ đánh giá theo nhiều tiêu chí (multi-criteria)
    • Thêm hệ thống đánh giá đa tiêu chí – cho phép người dùng đánh giá theo nhiều khía cạnh tùy chọn (ví dụ: UI, UX, Tốc độ…)
    • Ra mắt shortcode [init_review_criteria] – hiển thị tổng điểm, modal đánh giá, danh sách review kèm phân tích từng tiêu chí.
    • Tự động lấy các tiêu chí từ phần thiết lập admin – hỗ trợ tối đa 5 tiêu chí tùy chỉnh.
    • Phân tách hoàn toàn logic xử lý giữa đánh giá đơn tiêu chí và đa tiêu chí – không ảnh hưởng lẫn nhau.
    • Giao diện modal đánh giá mới (cho đa tiêu chí) được tối ưu UX: dễ dùng, đẹp, tương thích theme.
    • Hỗ trợ xuất Schema JSON-LD riêng cho đánh giá đa tiêu chí (có thể bật/tắt qua shortcode).
    • Cho phép giới hạn hiển thị số lượng review thông qua thuộc tính per_page trong shortcode.
    • Cập nhật shortcode builder trong admin: hỗ trợ tạo shortcode cho cả hệ thống mới.
    • Thêm filter mới cho developer mở rộng: init_plugin_suite_review_system_get_criteria_labels, init_plugin_suite_review_system_schema_type, v.v.
    • Tối ưu hiệu suất: chỉ load JS/CSS khi shortcode được sử dụng, tránh ảnh hưởng các trang không liên quan.
    • Fix một số lỗi nhỏ và cải thiện bảo mật khi xử lý dữ liệu từ REST API và frontend.
  • 1.0 – Phiên bản đầu tiên của Init Review System
    • Ra mắt shortcode [init_review_system] cho phép đánh giá 5 sao trực tiếp trên frontend.
    • Ra mắt shortcode [init_review_score] để hiển thị điểm trung bình (readonly), có tuỳ chọn hiển thị icon.
    • Hỗ trợ REST API /wp-json/initrsys/v1/vote để lưu điểm đánh giá qua JavaScript.
    • Điểm được lưu và kiểm soát thông qua localStorage – không cần đăng nhập, không dùng cookie.
    • Schema JSON-LD chuẩn AggregateRating giúp tối ưu SEO và hiển thị điểm trên Google.
    • Cài đặt chèn tự động điểm và block đánh giá trước/sau nội dung hoặc khung bình luận.
    • Tuỳ chọn bật/tắt yêu cầu đăng nhập và kiểm tra IP nghiêm ngặt để chống spam.
    • UI nhẹ, responsive, không dùng jQuery, kế thừa CSS từ theme hiện tại.
    • Toàn bộ giao diện hiển thị được render bằng JavaScript thuần (Vanilla JS).
    • Có trang cấu hình trong admin: chọn vị trí hiển thị, bật giới hạn đăng nhập, kiểm tra IP, và thêm shortcode builder.
    • Tích hợp sẵn hệ thống filter, action và helper cho developer mở rộng: schema, điểm, logic vote tùy chỉnh…
    • Thiết kế để tương thích hoàn hảo với các plugin khác trong Init Plugin Suite như Init Embed Posts, Init Live Search…
Made with in HCMC.

Bình luận


1 bình luận
  • Admin

    27/06/2025 lúc 20:34

    Demo ngay tại trang luôn, kéo lên trên 1 tí là thấy nhé! ⭐

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...