Mô tả
Mang đến trải nghiệm tìm kiếm phản hồi cực nhanh cho người truy cập — không tải lại trang, không jQuery, không giật lag. Init Live Search là giải pháp tìm kiếm trực tiếp hiện đại, nhẹ, và có khả năng truy cập đầy đủ cho WordPress — giờ đây có thêm các block Block Editor (Gutenberg) gốc và hỗ trợ Abilities API (WordPress 6.9+), chỉ mục tìm kiếm FULLTEXT của MySQL tùy chọn, tích hợp Meilisearch tùy chọn, khớp theo thẻ tag, hỗ trợ metadata SEO, tích hợp ACF, bộ lọc sản phẩm WooCommerce, và các cấu hình giao diện có thể tùy chỉnh.
Nó thay thế <input name="s"> mặc định bằng một modal tìm kiếm gọn gàng, trực quan, được vận hành hoàn toàn bằng REST API của WordPress. Mọi thứ tải theo thời gian thực — không làm gián đoạn luồng duyệt web.
Hoàn hảo cho các blog nhiều nội dung, cửa hàng WooCommerce, hoặc thậm chí các site headless. Mọi tương tác đều nhanh, mượt mà, và được thiết kế để hoạt động trên nhiều thiết bị.
Muốn có thêm khả năng chịu lỗi chính tả và xếp hạng theo mức độ liên quan dưới 50ms? Chỉ với vài cú nhấp chuột, kết nối instance Meilisearch tự lưu trữ hoặc trên cloud của riêng bạn — Init Live Search sẽ tự động ưu tiên dùng nó cho tìm kiếm, và cũng tự động chuyển về tìm kiếm cơ sở dữ liệu tích hợp sẵn nếu nó không thể truy cập được. Người truy cập của bạn sẽ không bao giờ thấy ô tìm kiếm bị lỗi.
Thích làm việc hoàn toàn trong Block Editor? Ba block động — Live Search Box, Related Posts, và AI Related Posts — nằm trong danh mục Init Live Search riêng trong trình chèn block, mỗi block đều có bản xem trước trực tiếp phía server khi bạn cấu hình, và mỗi block dùng chung chính xác mã hiển thị với shortcode tương ứng. Đối với các AI agent và công cụ tự động, hai ability chỉ đọc (tìm kiếm và bài viết liên quan) cũng được công khai qua Abilities API chuẩn của WordPress trên phiên bản 6.9+.
Nó cũng mang đến bài viết liên quan dùng AI và bộ tạo từ khóa nâng cao — giúp người truy cập của bạn có những cách thông minh hơn để khám phá nội dung.
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-live-search
Có gì mới trong Phiên bản 2.0.x
- Bài viết liên quan nhẹ hơn nhiều: bài viết liên quan theo từ khóa (shortcode, block, tự động chèn) giờ được lưu đệm theo từng bài viết, nên một lượt xem bài viết bình thường không còn phải chạy toàn bộ quy trình tìm kiếm. Bước đa dạng hóa của AI Related Posts nhanh hơn khoảng 3 lần với kết quả giống hệt
- Sửa lỗi FULLTEXT: các tìm kiếm chứa từ tiếng Anh thông dụng (ví dụ “how to install”, “the best laptop”) không còn trả về không kết quả khi bật chỉ mục FULLTEXT
- Phân trang tìm kiếm hoạt động đúng: cuộn vô hạn giờ tải đúng các trang tiếp theo (cho cả tìm kiếm bằng cơ sở dữ liệu lẫn Meilisearch) thay vì lặp lại trang 1
- Cơ chế dự phòng thông minh, nhanh hơn: khi Meilisearch gặp sự cố, hệ thống chuyển ngay sang cơ sở dữ liệu thay vì chờ hết thời gian chờ ở mỗi lượt tìm kiếm; chuyển hướng thông minh 404 được lưu đệm;
/randomkhông còn dùngORDER BY RAND(); đoạn trích không còn chạy toàn bộ chuỗi filterthe_content - Khớp tiếng Việt & Unicode tốt hơn: đầu vào dạng tổ hợp (NFD) từ bàn phím macOS/iOS giờ đã khớp được, đoạn trích không phân biệt dấu giống như khi làm nổi bật, và việc đếm từ đã nhận biết Unicode
- Tăng cường bảo mật: bài viết nháp, bài viết riêng tư, nội dung có mật khẩu bảo vệ, loại bài viết/danh mục không công khai và mã giảm giá WooCommerce giới hạn theo email không còn có thể bị lộ qua các endpoint công khai; kết quả liên trang được làm sạch ngay trên trình duyệt
- Thống kê tìm kiếm chính xác hơn: chỉ ghi lại các lượt tìm kiếm thực sự của người truy cập (bài viết liên quan, chuyển hướng 404 và các lệnh gọi API không còn được tính)
- Script phía frontend giờ được tải với
defer; bộ nhớ đệm kết quả trên trình duyệt giờ có thời hạn (1 giờ theo mặc định) và không bao giờ làm hỏng tìm kiếm khi bộ nhớ đầy hoặc bị chặn - Hỗ trợ Abilities API (WordPress 6.9+): tìm kiếm và bài viết liên quan được công khai dưới dạng hai ability chỉ đọc, có thể phát hiện (
init-live-search/search-posts,init-live-search/get-related-posts) — 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 - Hỗ trợ Block Editor (Gutenberg): ba block mới — Live Search Box, Related Posts, AI Related Posts — trong danh mục block riêng, mỗi block đều có bản xem trước trực tiếp trong trình soạn thảo và dùng chung mã hiển thị với shortcode tương ứng
- Requires at least được nâng từ 5.9 lên 6.9 để hỗ trợ Abilities API.
Requires PHPvẫn giữ nguyên 7.4
Tính năng
Đầy đủ mọi thứ mà một hệ thống tìm kiếm trực tiếp hiện đại cần — và hơn thế nữa:
- Tìm kiếm trực tiếp qua REST API (không dùng admin-ajax, không jQuery)
- MỚI: Các block Block Editor (Gutenberg) — Live Search Box, Related Posts, và AI Related Posts — trong danh mục block riêng, 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
- MỚI: Hỗ trợ Abilities API (WordPress 6.9+) — tìm kiếm và bài viết liên quan đượ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 namespacewp-abilities/v1 - MỚI: Chỉ mục tìm kiếm FULLTEXT của MySQL (tùy chọn) — khớp Tiêu đề/Đoạn trích/Nội dung nhanh hơn so với truy vấn
LIKEtrên tìm kiếm cơ sở dữ liệu tích hợp sẵn, tự động xây dựng ngầm - MỚI: Tích hợp Meilisearch tùy chọn — tìm kiếm ngoài chịu lỗi chính tả, xếp hạng theo mức độ liên quan, tự động chuyển về tìm kiếm DB cục bộ khi cần
- Chế độ tìm kiếm nhận biết thẻ tag thông minh (khớp tiêu đề + thẻ tag)
- Hỗ trợ metadata SEO: Yoast, Rank Math, AIOSEO, SEOPress, TSF
- Khớp trường ACF và các filter có thể tùy chỉnh
- Mở rộng từ đồng nghĩa với logic chấm điểm dự phòng
- Lệnh gạch chéo:
/recent,/popular,/tag,/id,/sku,/price,/coupon, v.v. - Hỗ trợ WooCommerce: tìm theo sản phẩm, SKU, thương hiệu, thuộc tính, biến thể, mã giảm giá
- Giao diện modal gọn gàng với điều hướng bằng bàn phím (
↑ ↓ Enter Esc) - Nhập liệu bằng giọng nói tùy chọn (SpeechRecognition)
- Tìm kiếm nhanh bằng tooltip (chọn văn bản để kích hoạt)
- Hệ thống yêu thích qua biểu tượng trái tim hoặc lệnh
/fav - Cuộn vô hạn và bộ lọc chuyên mục thông minh (không cần API bổ sung)
- Liên kết sâu (deep linking):
?modal=search&term=... - Shortcode mới
[init_live_search]: chèn ô nhập hoặc biểu tượng ở bất kỳ đâu - Cấu hình giao diện: mặc định, toàn màn hình, thanh trên cùng — có thể ghi đè CSS hoàn toàn
- Lưu đệm cục bộ + thống kê (xuất CSV, không lưu dữ liệu cá nhân)
- Sẵn sàng cho lập trình viên: lệnh gạch chéo tùy chỉnh, filter REST, hook JS
Hỗ trợ chế độ tối
Bật chế độ tối cho modal bằng một trong hai cách:
-
Thêm lớp dark:
document.querySelector(‘#ils-modal’)?.classList.add(‘dark’);
-
Hoặc dùng cấu hình toàn cục:
window.InitPluginSuiteLiveSearchConfig = { theme: ‘dark’ };
Tùy chọn: dark, light, auto
Cài đặt quản trị
- Chọn loại bài viết để đưa vào tìm kiếm
- Bật chỉ mục tìm kiếm FULLTEXT của MySQL (tùy chọn) để khớp Tiêu đề/Đoạn trích/Nội dung nhanh hơn, với việc lập chỉ mục ngầm tự động
- Kết nối máy chủ Meilisearch tùy chọn (Host, Index, khóa Search/Admin, thời gian chờ, kiểm tra kết nối chỉ với một cú nhấp, lập chỉ mục ngay chỉ với một cú nhấp)
- Cấu hình cách kích hoạt modal (focus ô nhập, nhấp ba lần, Ctrl+/)
- Bật lệnh gạch chéo (ví dụ /recent, /tag, /id)
- Bật hỗ trợ cho toán tử từ khóa
+và-(bắt buộc có, bắt buộc không có) - Đặt lệnh gạch chéo mặc định chạy khi mở modal (chỉ khi lệnh gạch chéo được bật)
- Đặt thời gian debounce và số kết quả tối đa
- Chọn chế độ tìm kiếm (chỉ tiêu đề, nhận biết thẻ tag, toàn bộ nội dung)
- Định nghĩa các trường ACF tùy chỉnh để đưa vào tìm kiếm (tùy chọn)
- Bật tìm kiếm trong metadata SEO (Yoast, Rank Math, v.v.)
- Bật/tắt hiển thị đoạn trích bên dưới mỗi kết quả (đoạn trích một dòng theo ngữ cảnh)
- Bật/tắt logic dự phòng (bigram/cắt bớt)
- Bật mở rộng từ đồng nghĩa và quản lý ánh xạ từ đồng nghĩa (trình soạn thảo JSON)
- Bật Thống kê tìm kiếm để ghi lại truy vấn (không lưu dữ liệu cá nhân)
- Đặt số từ tối đa cho tìm kiếm bằng tooltip
- Bật nhập liệu bằng giọng nói (SpeechRecognition API)
- Bật lưu đệm kết quả (localStorage)
- Chọn kiểu giao diện frontend (mặc định, toàn màn hình, hoặc thanh trên cùng)
- Cho phép theme ghi đè qua
init-live-search/style.css - Tự động chèn bài viết liên quan sau nội dung hoặc bình luận (tùy chọn)
- Tùy chọn tắt hoàn toàn toàn bộ CSS có sẵn
- Thêm tham số UTM mặc định vào liên kết kết quả
- Định nghĩa hoặc tự động tạo gợi ý từ khóa
Chỉ mục Tìm kiếm FULLTEXT (Tùy chọn)
Tìm kiếm cơ sở dữ liệu tích hợp sẵn thường dùng truy vấn LIKE '%term%', vốn không thể tận dụng chỉ mục thông thường và trở nên chậm trên các site có nhiều bài viết. Đánh dấu chọn Chỉ mục Tìm kiếm FULLTEXT (Settings Init Live Search General) để đồng bộ Tiêu đề/Đoạn trích/Nội dung vào một bảng chỉ mục riêng (bảng wp_posts của bạn không bị ảnh hưởng) và khớp bằng MATCH() AGAINST() của MySQL thay thế.
Khi bật, chỉ mục sẽ tự động xây dựng ngầm qua WP-Cron — không cần SSH/WP-CLI — hoặc bạn có thể tăng tốc bằng wp init-live-search fulltext-reindex. Nếu máy chủ của bạn không hỗ trợ FULLTEXT, hoặc chỉ mục chưa được xây dựng xong, plugin sẽ tiếp tục dùng tìm kiếm LIKE tiêu chuẩn — không có gì bị hỏng cả. Tìm kiếm theo thẻ tag, metadata SEO, trường ACF, từ đồng nghĩa, và các toán tử +/- đều vẫn hoạt động bình thường trong mọi trường hợp.
Tích hợp Meilisearch (Tùy chọn)
Init Live Search hoạt động tốt ngay khi cài đặt mà không cần cấu hình gì thêm — tìm kiếm cơ sở dữ liệu tích hợp sẵn xử lý mọi thứ theo mặc định. Nhưng nếu bạn muốn tìm kiếm nhanh hơn, chịu lỗi chính tả, xếp hạng theo mức độ liên quan ở quy mô lớn, bạn có thể kết nối instance Meilisearch của riêng mình chỉ trong vài phút.
Cách hoạt động:
- Tự cài đặt và chạy Meilisearch — tự lưu trữ (một VPS nhỏ là đủ cho hầu hết các blog) hoặc qua Meilisearch Cloud. Plugin này không lưu trữ hay quản lý máy chủ thay bạn.
- Vào Settings Init Live Search Meilisearch, nhập URL Host, Tên chỉ mục, và một khóa API chỉ dùng để tìm kiếm, sau đó bật tích hợp.
- Lập chỉ mục cho nội dung đã xuất bản hiện có của bạn bằng cách chạy
wp init-live-search meili-reindexqua WP-CLI, hoặc nhấp vào nút “Lập chỉ mục ngay” ngay trên tab cài đặt Meilisearch (rất tiện nếu bạn không có quyền truy cập WP-CLI/SSH) — quá trình này chạy ngầm (~200 bài viết mỗi 5 giây) kèm trạng thái tiến trình trực tiếp. - Vậy là xong — các yêu cầu tìm kiếm giờ sẽ được xử lý bởi Meilisearch. Bài viết mới, đã cập nhật, và đã xóa sẽ luôn được đồng bộ tự động.
Được xây dựng vì sự an toàn, không phải để trói buộc bạn:
- Nếu Meilisearch bị tắt, chưa được cấu hình, hoặc không phản hồi (hết thời gian chờ, sai khóa, máy chủ ngừng hoạt động), plugin sẽ tự động và âm thầm chuyển sang tìm kiếm cơ sở dữ liệu cục bộ — người truy cập sẽ không bao giờ thấy ô tìm kiếm bị lỗi.
- Việc lập chỉ mục lại (qua nút hoặc WP-CLI) luôn được thực hiện thủ công, và tự động dừng kèm thông báo lỗi rõ ràng sau 3 lô thất bại liên tiếp thay vì thử lại mãi mãi.
- Khóa lập chỉ mục nhạy cảm của bạn có thể được đặt trong
wp-config.php(INIT_LIVE_SEARCH_MEILI_ADMIN_KEY) thay vì lưu trong cơ sở dữ liệu. - Bạn có thể tắt tính năng này bất cứ lúc nào — hành vi tìm kiếm cốt lõi của site bạn không phụ thuộc vào việc có Meilisearch hay không.
Phím tắt
- Mũi tên Lên / Xuống — di chuyển giữa các kết quả
- Mũi tên Phải — thêm kết quả đang chọn vào mục yêu thích (nếu chưa thêm)
- Mũi tên Trái — xóa kết quả đang chọn khỏi mục yêu thích
- Enter — mở kết quả đang chọn hoặc gửi đi
- Escape — đóng modal và đặt lại trạng thái
- Gạch chéo (/) — bắt đầu một lệnh ngay lập tức (ví dụ:
/recent,/id 123)
Tài liệu tham khảo cho lập trình viên: Shortcode, Filter, và Hook
Shortcode
[init_live_search]
Hiển thị biểu tượng hoặc ô nhập tìm kiếm ở bất kỳ đâu để mở modal Init Live Search.
Thuộc tính:
– type: icon (mặc định) hoặc input – chọn giữa biểu tượng có thể nhấp hoặc ô tìm kiếm
– placeholder: (tùy chọn) văn bản gợi ý trong ô nhập nếu type="input"
– label: (tùy chọn) thêm nhãn bên cạnh biểu tượng nếu type="icon"
– class: (tùy chọn) thêm lớp CSS tùy chỉnh như dark, my-style, v.v.
– stroke_width: (tùy chọn) đặt độ dày nét cho biểu tượng tìm kiếm (mặc định: 1)
– radius: (tùy chọn) ghi đè bán kính bo góc của form nhập liệu (mặc định: 9999px từ CSS; chỉ áp dụng nếu giá trị khác)
[init_live_search_related_posts]
Hiển thị danh sách bài viết liên quan (HTML tĩnh) dựa trên tiêu đề bài viết hoặc từ khóa, được tối ưu cho SEO và có thể tùy chỉnh giao diện hoàn toàn.
Thuộc tính:
– id: (tùy chọn) ID bài viết để tìm bài viết liên quan (mặc định: bài viết hiện tại)
– count: (tùy chọn) số bài viết hiển thị (mặc định: 5)
– keyword: (tùy chọn) ghi đè từ khóa dùng để tìm bài viết liên quan
– template: (tùy chọn) mẫu bố cục sử dụng — default, grid, classic, compact, thumbright
– css: 1 (mặc định) hoặc 0 – tắt CSS mặc định nếu bạn muốn tự tạo kiểu dáng hoàn toàn
– schema: 1 (mặc định) hoặc 0 – tắt xuất ItemList JSON-LD cho schema SEO
[init_live_search_related_ai]
Hiển thị danh sách bài viết liên quan dùng AI, chấm điểm dựa trên nhiều tín hiệu (thẻ tag, series, bigram tiêu đề, same_keyword qua ACF, chuyên mục, lượt xem, bình luận, độ mới).
Dùng chung mẫu với [init_live_search_related_posts], nên không cần tạo kiểu dáng thêm.
Thuộc tính:
– id: (tùy chọn) ID bài viết để tìm bài viết liên quan (mặc định: bài viết hiện tại)
– count: (tùy chọn) số bài viết hiển thị (mặc định: 5)
– post_type: (tùy chọn) giới hạn kết quả theo một hoặc nhiều loại bài viết (mặc định: post)
– template: (tùy chọn) mẫu bố cục sử dụng — default, grid, classic, compact, thumbright
– css: 1 (mặc định) hoặc 0 – tắt CSS mặc định nếu bạn muốn tự tạo kiểu dáng hoàn toàn
– schema: 1 (mặc định) hoặc 0 – tắt xuất ItemList JSON-LD cho schema SEO
Filter dành cho lập trình viên
Init Live Search bao gồm nhiều filter giúp lập trình viên tùy chỉnh hành vi và kết quả xuất ra ở nhiều giai đoạn khác nhau của luồng tìm kiếm.
Tài liệu đầy đủ (kèm mẫu mã & cách dùng nâng cao): Using Filters in Init Live Search
Các filter phổ biến
init_plugin_suite_live_search_enable_fallback
Bật hoặc tắt logic dự phòng khi tìm được ít kết quả.
init_plugin_suite_live_search_post_ids
Tùy chỉnh mảng ID bài viết được trả về từ truy vấn.
init_plugin_suite_live_search_result_item
Chỉnh sửa từng mục kết quả trước khi gửi trong phản hồi.
init_plugin_suite_live_search_results
Lọc mảng kết quả cuối cùng trước khi trả về.
init_plugin_suite_live_search_query_args
Chỉnh sửa các tham số WP_Query cho từng lệnh khác nhau.
init_plugin_suite_live_search_ai_weights
Điều chỉnh trọng số chấm điểm AI cho bài viết liên quan.
init_plugin_suite_live_search_related_cache_ttl
Thời gian lưu đệm (tính bằng giây) của bài viết liên quan theo từ khóa, cho mỗi bài viết. Trả về 0 để tắt.
init_plugin_suite_live_search_use_legacy_excerpt
Trả về true để tạo đoạn trích dự phòng qua get_the_excerpt() / the_content giống như các phiên bản trước 2.0.1.
(…và nhiều hơn nữa trong tài liệu đầy đủ)
Endpoint REST API
Các endpoint được tài liệu hóa đầy đủ, nhẹ, và ưu tiên API. Lý tưởng cho các dự án headless hoặc tách rời frontend.
Mọi endpoint đều nằm trong namespace: initlise/v1
Tài liệu đầy đủ (kèm ví dụ & tham số): REST API Endpoints in Init Live Search
Các endpoint phổ biến
/search?term=example
Truy vấn tìm kiếm tiêu chuẩn (dùng các cài đặt của plugin như loại bài viết, chế độ tìm kiếm, dự phòng…).
/id/{id}
Lấy bài viết theo ID (trả về đường dẫn cố định).
/recent
Lấy các bài viết mới nhất.
/tax?taxonomy=category&term=slug-or-id
Lấy bài viết theo danh mục phân loại (chuyên mục, thẻ, hoặc tùy chỉnh).
/related?title=page-title&exclude=ID
Lấy bài viết liên quan đến tiêu đề trang hiện tại.
/product?...
Lấy sản phẩm WooCommerce với các tham số truy vấn linh hoạt.
(…và nhiều hơn nữa trong tài liệu đầy đủ)
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

data-ils










style-full.css
style-topbar.css
Khối
Plugin này cung cấp 3 khối.
- Live Search Box Insert the Init Live Search icon or input launcher.
- Live Search: Related Posts Insert keyword-based related posts powered by Init Live Search.
- Live Search: AI Related Posts Insert AI multi-signal related posts powered by Init Live Search.
Cài đặt
- Tải thư mục plugin lên
/wp-content/plugins/hoặc cài đặt qua bảng quản trị WordPress. - Kích hoạt plugin qua Plugins Installed Plugins.
- Vào Settings Init Live Search để cấu hình các tùy chọn.
- Modal tìm kiếm có thể được kích hoạt theo mặc định bằng:
- Focus vào bất kỳ trường
<input name="s">nào - Nhấn Ctrl + / (hoặc Cmd + / trên Mac)
- Nhấp ba lần vào bất kỳ đâu trên trang (trong vòng 0,5 giây)
- Nhấp vào một phần tử có thuộc tính
data-ils - Truy cập một URL có
#searchhoặc?modal=search&term=your+keyword
- Focus vào bất kỳ trường
Hỏi đáp
-
Plugin này có dùng jQuery không?
-
Không. Plugin được xây dựng hoàn toàn bằng JavaScript thuần hiện đại — không jQuery, không phụ thuộc bên ngoài.
-
Chỉ mục tìm kiếm FULLTEXT là gì và tôi có cần SSH/WP-CLI để dùng nó không?
-
Đây là một cách tùy chọn để tăng tốc tính năng tìm kiếm cơ sở dữ liệu tích hợp sẵn — khớp Tiêu đề/Đoạn trích/Nội dung qua chỉ mục FULLTEXT của MySQL thay vì quét chậm bằng
LIKE '%term%', rất đáng dùng khi thư viện nội dung của bạn phát triển lớn. Không cần SSH/WP-CLI: khi bật trong cài đặt, chỉ mục sẽ tự xây dựng ngầm qua WP-Cron (fulltext-reindexcủa WP-CLI chỉ là một lựa chọn thay thế nhanh hơn, không bắt buộc). -
Meilisearch là gì và tôi có cần dùng nó không?
-
Meilisearch là một công cụ tìm kiếm mã nguồn mở, nhanh, nổi tiếng với khả năng chịu lỗi chính tả và xếp hạng theo mức độ liên quan. Bạn không bắt buộc phải dùng nó — tìm kiếm cơ sở dữ liệu tích hợp sẵn của Init Live Search hoạt động hoàn toàn độc lập. Meilisearch là một nâng cấp tùy chọn cho các site muốn có thêm lớp tốc độ và chất lượng khớp mờ ở quy mô lớn.
-
Init Live Search có lưu trữ (host) Meilisearch giúp tôi không?
-
Không. Meilisearch yêu cầu bạn tự có máy chủ riêng: bạn tự cài đặt và chạy nó (tự lưu trữ hoặc qua Meilisearch Cloud), sau đó kết nối từ phần cài đặt của plugin. Điều này giúp plugin luôn miễn phí và giúp bạn toàn quyền kiểm soát dữ liệu cũng như hạ tầng của mình.
-
Điều gì xảy ra nếu máy chủ Meilisearch của tôi gặp sự cố?
-
Không có gì bị hỏng cả. Plugin tự động phát hiện sự cố (hoặc hết thời gian chờ) và chuyển sang tìm kiếm cơ sở dữ liệu cục bộ cho yêu cầu đó — người truy cập sẽ không nhận thấy gì khác ngoài việc kết quả khớp có thể kém linh hoạt hơn một chút.
-
Làm sao để lập chỉ mục các bài viết hiện có của tôi vào Meilisearch?
-
Bạn có thể chạy
wp init-live-search meili-reindexqua WP-CLI, hoặc nhấp vào nút “Lập chỉ mục ngay” trên tab cài đặt Meilisearch nếu không có quyền truy cập WP-CLI/SSH — quá trình lập chỉ mục sẽ chạy ngầm kèm trạng thái tiến trình trực tiếp. Sau đó, bài viết mới, đã cập nhật, và đã xóa sẽ tự động đồng bộ. -
Tôi có thể chèn ô tìm kiếm ở bất kỳ đâu trên trang không?
-
Có. Dùng shortcode
[init_live_search]để chèn ô nhập hoặc biểu tượng tìm kiếm ở bất kỳ đâu. Bạn cũng có thể thêm lớp CSS tùy chỉnh hoặc bật chế độ tối. -
Tìm kiếm được kích hoạt như thế nào?
-
Theo mặc định, nó gắn vào bất kỳ
<input name="s">nào. Bạn cũng có thể kích hoạt qua:
– Ctrl + / (hoặc Cmd + /)
– Nhấp ba lần vào khoảng trống
– Tooltip khi chọn văn bản
–?modal=searchtrong URL
– Bất kỳ phần tử nào có thuộc tínhdata-ils -
Tôi có thể điền sẵn nội dung cho modal từ một liên kết không?
-
Có. Thêm
?modal=search&term=your+keywordhoặc#searchvào bất kỳ URL nào để điền sẵn nội dung cho modal và kích hoạt nó. -
Plugin có hỗ trợ tìm kiếm bằng giọng nói không?
-
Có. Plugin dùng SpeechRecognition API của trình duyệt với tự động dừng, nhận diện ngôn ngữ, và xử lý lỗi.
-
Lệnh gạch chéo là gì?
-
Lệnh gạch chéo là các lệnh gõ bắt đầu bằng
/, ví dụ:
–/recent— hiển thị bài viết mới nhất
–/tag seo— lọc theo thẻ tag
–/category news— lọc theo chuyên mục
–/id 123— lấy bài viết theo ID
–/fav,/fav_clear— quản lý mục yêu thích
–/random— hiển thị một bài viết ngẫu nhiên
–/history,/history_clear— quản lý lịch sử tìm kiếm gần đâyNếu WooCommerce đang hoạt động:
–/product,/sku,/price,/stock,/on-sale,/couponNếu các plugin Init khác đang hoạt động:
–/popular,/trending,/day,/week,/month— qua Init View Count
–/read— qua Init Reading PositionBạn có thể tắt hoàn toàn lệnh gạch chéo trong cài đặt plugin. Lập trình viên có thể đăng ký lệnh tùy chỉnh bằng filter
init_plugin_suite_live_search_commands. -
Tooltip Tìm kiếm nhanh là gì?
-
Khi người dùng chọn từ 1–8 từ, một tooltip nổi sẽ xuất hiện để kích hoạt tìm kiếm tức thì. Bạn có thể cấu hình hoặc tắt tính năng này trong cài đặt.
-
Plugin có hỗ trợ từ đồng nghĩa hoặc từ khóa thay thế không?
-
Có. Bạn có thể định nghĩa ánh xạ từ khóa từ đồng nghĩa tùy chỉnh qua tab Synonyms trong cài đặt.
Khi bật, plugin sẽ tự động mở rộng từ khóa tìm kiếm bằng các từ đồng nghĩa này nếu tìm được ít kết quả. -
Có. Plugin hỗ trợ chế độ đặc biệt “Smart Tag-Aware” khớp cả tiêu đề bài viết lẫn thẻ tag.
Nó cũng có thể tìm kiếm trong Tiêu đề SEO và Mô tả Meta từ các plugin như Yoast SEO, Rank Math, AIOSEO, The SEO Framework, và SEOPress. -
Plugin có hỗ trợ WooCommerce không?
-
Có. Bạn có thể tìm sản phẩm theo:
– Từ khóa
– Mã SKU
– Khoảng giá (/price)
– Tình trạng kho (/stock)
– Tình trạng khuyến mãi (/on-sale)
– Thương hiệu, thuộc tính, biến thể, và mã giảm giá (/coupon)Kết quả bao gồm tiêu đề, giá, tình trạng kho, và liên kết Thêm vào giỏ hàng.
-
Plugin có hỗ trợ đoạn trích trong kết quả tìm kiếm không?
-
Có. Plugin tạo một đoạn trích một dòng theo ngữ cảnh, có làm nổi bật từ khóa để dễ đọc lướt hơn.
-
Có. Trong phần cài đặt plugin, bạn có thể chọn tự động chèn bài viết liên quan sau nội dung hoặc quanh khu vực bình luận.
Tính năng này dùng nội bộ shortcode[init_live_search_related_posts]với bố cục mặc định.
Bạn vẫn có thể dùng shortcode thủ công để toàn quyền kiểm soát. -
Tôi có thể ghi đè hoặc tắt CSS của plugin không?
-
Có. Bạn có thể:
– Đặt tệpinit-live-search/style.csstrong theme của bạn
– Chọn một cấu hình có sẵn (style-full.css,style-topbar.css)
– Hoặc tắt toàn bộ CSS có sẵn và tự tạo kiểu dáng từ đầu -
Plugin có thân thiện với di động không?
-
Có. Modal có khả năng đáp ứng (responsive) với các tối ưu cho di động như cắt gọn đoạn trích và nút micro nổi.
-
Plugin có hỗ trợ lưu đệm kết quả không?
-
Có. Plugin dùng
localStorageđể lưu đệm kết quả tìm kiếm và giảm truy vấn lặp lại. Kết quả lưu đệm hết hạn sau 1 giờ theo mặc định (filterinit_plugin_suite_live_search_client_cache_ttl), và lệnh/clearsẽ xóa chúng ngay lập tức. -
Plugin có theo dõi dữ liệu người dùng không?
-
Chỉ khi Thống kê tìm kiếm được bật. Nó ghi lại:
– Từ khóa tìm kiếm
– Thời gian
– Số lượng kết quả
Không lưu bất kỳ thông tin cá nhân nào (IP, user agent, v.v.). -
Điều gì xảy ra nếu tôi nhấn Enter mà không chọn kết quả nào?
-
Plugin sẽ chuyển hướng đến trang kết quả tìm kiếm mặc định của WordPress.
-
Tôi có thể dùng plugin này trong cấu hình headless không?
-
Có. Mọi tính năng đều được vận hành bằng REST API (
initlise/v1) — lý tưởng cho các frontend tách rời. -
Tôi có thể nạp sẵn một lệnh gạch chéo mặc định khi mở modal không?
-
Có. Trong cài đặt, bạn có thể định nghĩa lệnh mặc định như
/recent,/read, hoặc/related. Cũng có chế độ “nhận diện thông minh” dựa trên ngữ cảnh trang. -
Plugin có hỗ trợ nhiều ngôn ngữ không?
-
Có. Plugin tự động phát hiện ngôn ngữ đang dùng khi cài đặt Polylang hoặc WPML. Bạn cũng có thể lọc kết quả qua
init_plugin_suite_live_search_filter_lang.
Đánh giá
Người đóng góp & Lập trình viên
“Init Live Search – AI-Powered, Related Posts, Slash Commands” 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 Live Search – AI-Powered, Related Posts, Slash Commands” đã đượ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 Live Search – AI-Powered, Related Posts, Slash Commands” 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.2 – 6 tháng 10, 2026
- Sửa lỗi: Bài viết liên quan không trả về kết quả nào khi bật “Sử dụng Tìm kiếm Mặc định của WordPress” (shortcode
[init_live_search_related_posts], khối Bài viết liên quan, lệnh slash/relatedvà tính năngget-related-posts). WP_Query chỉ khớp với toàn bộ tiêu đề, do đó kết quả khớp duy nhất chỉ là bài viết hiện tại. Bài viết liên quan giờ đây luôn sử dụng cơ chế khớp riêng của plugin (cụm từ rút gọn, bigram, từ đơn), bất kể cài đặt tìm kiếm mặc định ra sao - Sửa lỗi: các kết quả đã lưu cache ở bản 2.0.1 sẽ bị hủy bỏ, và kết quả Bài viết liên quan trống chỉ được lưu cache tối đa 1 giờ (thay vì 12 giờ)
2.0.1 – 25 tháng 9, 2026
- Đã sửa: tìm kiếm FULLTEXT trước đây không trả về kết quả cho các truy vấn chứa từ tiếng Anh thông dụng. Khi bật chỉ mục FULLTEXT, bất kỳ truy vấn nào chứa một từ dừng (stopword) của InnoDB (“how”, “the”, “what”, “about”…) — ví dụ “how to install” — trước đây không trả về gì cả, vì InnoDB không bao giờ lập chỉ mục cho các từ dừng và mọi từ đều bị đánh dấu là bắt buộc. Giờ các từ dừng không còn là từ bắt buộc, và nếu không còn từ nào thì tìm kiếm sẽ chuyển sang dùng LIKE; danh sách này có thể điều chỉnh qua
init_plugin_suite_live_search_fulltext_stopwords - Đã sửa: cuộn vô hạn trước đây yêu cầu lại trang 1 ở mỗi lần cuộn. Endpoint
/searchtrước đây bỏ qua tham sốpage, khiến “xem thêm” liên tục nhận cùng một kết quả. Giờ phân trang đã hoạt động đúng (tối đa 3 trang, theo thiết kế), và “xem thêm” dùng số kết quả tối đa đã cấu hình thay vì số 10 viết cứng - Đã sửa: khi bật Meilisearch, các trang từ 2 trở đi của kết quả tìm kiếm và bài viết liên quan trước đây luôn trống vì offset bị áp dụng hai lần
- Đã sửa: trước đây
wp init-live-search fulltext-reindexkhiến tìm kiếm không trả về gì trong lúc chỉ mục đang được xây dựng lại; giờ tìm kiếm tạm thời dùng LIKE cho đến khi việc xây dựng lại hoàn tất - Đã sửa: dự phòng theo từ đơn trước đây âm thầm không trả về gì trên MySQL 5.7 trở về trước, vốn không hỗ trợ
\btrong REGEXP; giờ cú pháp ranh giới từ chính xác được chọn theo từng máy chủ (MySQL 8.0.4+ và MariaDB không thay đổi) - Đã sửa: dự phòng “rút gọn cụm từ” trước đây ghi đè lên các kết quả đã tìm được (kể cả kết quả khớp từ đồng nghĩa) thay vì bổ sung thêm vào
- Đã sửa: việc khớp trường ACF trước đây bỏ qua cài đặt Loại bài viết cần bao gồm
- Đã sửa: khóa object-cache trước đây thiếu thông tin ngôn ngữ,
no_fallbackvà cài đặt hiện tại, khiến các site dùng Redis/Memcached có thể nhận kết quả sai ngôn ngữ; kết quả lưu đệm giờ cũng tự động làm mới bất cứ khi nào bài viết hoặc term thay đổi - Đã sửa: cảnh báo lỗi thời của PHP 8.1+ trên các yêu cầu
/productkhông có thứ tự giá; ID kết quả giờ luôn được trả về dưới dạng số nguyên (như schema của Abilities API yêu cầu) - Đã sửa: trước đây khi gỡ cài đặt vẫn còn sót lại các phần dữ liệu thống kê, cài đặt Meilisearch, cài đặt từ điển và transient bộ nhớ đệm; các mạng multisite giờ được dọn dẹp theo từng site
- Bảo mật: trước đây
/readcó thể trả về tiêu đề, liên kết và đoạn trích của bài viết nháp và bài viết riêng tư theo ID. Giờ mọi danh sách kết quả (REST, block, shortcode, ability) chỉ chứa các bài viết đã xuất bản thuộc loại bài viết công khai hoặc được quản trị viên cho phép — filterinit_plugin_suite_live_search_is_result_visible - Bảo mật: các bài viết có mật khẩu bảo vệ giờ chỉ có thể tìm kiếm theo tiêu đề — không tạo đoạn trích từ nội dung của chúng và chỉ mục FULLTEXT không còn lưu trữ nội dung đó
- Bảo mật:
post_typetruyền qua thuộc tính shortcode/block hoặc Abilities API giờ bị giới hạn ở các loại bài viết công khai hoặc được quản trị viên cho phép (ví dụshop_couponhoặcwp_blockkhông còn có thể được truy vấn);/taxchỉ chấp nhận các danh mục phân loại công khai (filterinit_plugin_suite_live_search_allowed_taxonomy) - Bảo mật:
/couponbỏ qua các mã giảm giá giới hạn theo email (dành riêng cho khách hàng) và chỉ phản hồi khiproductđược bật — filterinit_plugin_suite_live_search_coupon_include_restrictedvàinit_plugin_suite_live_search_coupon_enabled - Bảo mật: kết quả tìm kiếm liên trang được làm sạch trên trình duyệt (chỉ giữ lại việc làm nổi bật bằng
<mark>, liên kết phải là http/https), và việc loại bỏ HTML không còn dùnginnerHTML - Hiệu năng: bài viết liên quan không còn chạy tìm kiếm đầy đủ ở mỗi lượt xem trang. Bài viết liên quan theo từ khóa (shortcode, block, tự động chèn, Abilities API) giờ được lưu đệm theo từng bài viết trong 12 giờ và được kiểm tra lại trước khi hiển thị — filter
init_plugin_suite_live_search_related_cache_ttl(0để tắt) - Hiệu năng: Thống kê tìm kiếm giờ chỉ ghi lại các lượt tìm kiếm thực sự của người truy cập — trước đây bài viết liên quan, chuyển hướng 404 và lệnh gọi API cũng bị tính, gây ra một lượt ghi cơ sở dữ liệu ở mỗi lần xem bài viết (filter
init_plugin_suite_live_search_should_track) - Hiệu năng: cơ chế ngắt mạch (circuit breaker) cho Meilisearch — sau khi hết thời gian chờ hoặc gặp lỗi 5xx, Meilisearch sẽ bị bỏ qua trong 60 giây và tìm kiếm chuyển ngay sang cơ sở dữ liệu thay vì chờ hết thời gian chờ ở mỗi yêu cầu (filter
init_plugin_suite_live_search_meili_circuit_ttl); chỉ ID tài liệu được yêu cầu từ Meilisearch - Hiệu năng: đoạn trích dự phòng cho các bài viết không có đoạn trích thủ công không còn chạy toàn bộ chuỗi filter
the_content(shortcode, trình dựng trang, nhúng) cho mỗi kết quả — trả vềtruetừinit_plugin_suite_live_search_use_legacy_excerptđể khôi phục hành vi cũ - Hiệu năng: kết quả chuyển hướng thông minh 404 được lưu đệm và các URL của bot rác bị bỏ qua (filter
init_plugin_suite_live_search_404_cache_ttl,init_plugin_suite_live_search_404_redirect_status);/randomchọn một offset ngẫu nhiên thay vì dùngORDER BY RAND() - Hiệu năng: bước đa dạng hóa của AI Related Posts (MMR) giờ có độ phức tạp O(k·n) thay vì O(k²·n) — kết quả giống hệt, nhanh hơn khoảng 3 lần; bộ nhớ đệm ứng viên được nạp trước khi lọc
- Hiệu năng: lập chỉ mục FULLTEXT ngầm và
wp init-live-search fulltext-reindexgiờ dùng phân trang theo keyset (ID > last) thay vì OFFSET — nhanh hơn trên các site lớn và không bỏ sót bài viết nào; tiến trình lập chỉ mục 2.0.0 đang dở dang sẽ tự động tiếp tục - Hiệu năng: dự phòng theo từ đơn được giới hạn tối đa 6 từ khác nhau (filter
init_plugin_suite_live_search_fallback_max_words); từ điển đồng nghĩa chỉ được xây dựng một lần cho mỗi yêu cầu; việc lọc theo toán tử +/- và mẫu Related Posts nạp trước bộ nhớ đệm chỉ trong một truy vấn; làm nổi bật từ khóa nhanh hơn với kết quả giống hệt - Hiệu năng: script frontend giờ được tải với
defer, và việc xử lý cuộn trang được thực hiện thụ động và giới hạn theo khung hình - Cải thiện: khớp tiếng Việt & Unicode tốt hơn. Từ khóa tìm kiếm được chuẩn hóa về Unicode NFC, nên tiếng Việt gõ trên bàn phím macOS/iOS giờ đã khớp được; đoạn trích không phân biệt chữ hoa/thường và dấu (nhất quán với việc làm nổi bật) và không bao giờ cắt đôi một từ; việc đếm từ đã nhận biết Unicode. Từ khóa tìm kiếm được giới hạn độ dài (filter
init_plugin_suite_live_search_max_term_length,init_plugin_suite_live_search_rest_max_term_length) - Cải thiện: xếp hạng nhất quán khi các kết quả có điểm bằng nhau (ưu tiên vị trí tốt nhất trong bất kỳ danh sách nguồn nào), thay vì thứ tự phụ thuộc vào phiên bản PHP
- Thay đổi: bộ nhớ đệm kết quả trên trình duyệt (
localStorage) giờ hết hạn sau 1 giờ (filterinit_plugin_suite_live_search_client_cache_ttl,0= không bao giờ hết hạn) và không còn làm hỏng tìm kiếm khi bộ nhớ đầy hoặc bị chặn - i18n: đã tạo lại
.pot; đã dịch 1 chuỗi mới (“Open Search”) và 3 chuỗi trước đây còn thiếu trong bản dịch tiếng Việt.po/.mo
2.0.0 – 4 tháng 8, 2026
- Mới: Hỗ trợ Abilities API (WordPress 6.9+): đăng ký hai ability chỉ đọc trong danh mục
init-live-search—init-live-search/search-posts(chạy công cụ tìm kiếm của plugin và trả về các kết quả khớp) vàinit-live-search/get-related-posts(trả về các bài viết liên quan đến một ID bài viết cho trước). Cả hai đều có thể được phát hiện và thực thi qua PHP,wp_get_abilities(), và — khi site chọn tham gia — qua REST namespacewp-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): ba block động, được nhóm trong danh mục block Init Live Search riêng (thay vì danh mục “Widgets” chung chung). Mỗi block được đăng ký qua
block.json(với tệp PHPrender.phpkế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:- Live Search Box — biểu tượng/ô nhập để khởi chạy, tương đương với
[init_live_search] - Live Search: Related Posts — bài viết liên quan theo từ khóa, tương đương với
[init_live_search_related_posts] - Live Search: AI Related Posts — bài viết liên quan dùng AI đa tín hiệu, tương đương với
[init_live_search_related_ai]
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ụngwp.serverSideRenderđể xem trước trực tiếp ngay trong trình soạn thảo. CSS cho cả bản xem trước trong trình soạn thảo lẫn frontend được khai báo một lần qua trường"style"củablock.json(khớp với cài đặt “CSS Style” bạn đã chọn), nên WordPress sẽ tự động enqueue nó ở bất cứ đâu cần thiết — không cần gọi enqueue thủ công
- Live Search Box — biểu tượng/ô nhập để khởi chạy, tương đương với
- Thay đổi:
Requires at leastđược nâng từ 5.9 lên 6.9 để hỗ trợ tích hợp Abilities API.Requires PHPvẫn giữ nguyên 7.4 - Đã sửa: các chuỗi trong trình chèn/thanh bên của Block Editor (tiêu đề block, mô tả, từ khóa, và nhãn cài đặt) giờ đã được dịch chính xác — cả các chuỗi phía JS (qua tệp dịch JSON định dạng Jed, được xử lý qua
wp_set_script_translations()với đường dẫn rõ ràng đến thư mụclanguages/của plugin này) lẫn các chuỗi metadata trongblock.json(qua cơ chế gettext/.motiêu chuẩn của PHP) Đã kiểm tra đến: 7.1
1.9.6 – 3 tháng 8, 2026
- Đã sửa: việc lập chỉ mục ngầm FULLTEXT trước đây hiển thị lỗi “không chạy” sai. Ngay sau khi bật ô đánh dấu, trạng thái có thể tạm thời (và gây hiểu lầm) báo rằng WP-Cron không chạy — dù thực tế nó vẫn đang chạy giữa lô — vì WP-Cron hủy lịch một sự kiện trước khi chạy nó, nên một kiểm tra
wp_next_scheduled()đơn thuần có thể bắt gặp đúng lúc khoảng trống đó. Giờ việc phát hiện trạng thái cũng kiểm tra xem có lô nào đang được xử lý hay không, và lần tải trang ngay sau khi nhấp Lưu sẽ hiển thị thông báo trung lập “Đang kiểm tra trạng thái lập chỉ mục…” thay vì đoán đúng hoặc sai — vì tại thời điểm đó đơn giản là còn quá sớm để biết được - Đã sửa: việc lập chỉ mục lại của Meilisearch trước đây có thể thất bại hoàn toàn với lỗi
HTTP error 413 from Meilisearch. Kích thước payload JSON của một lô phụ thuộc vào nội dung bài viết, không chỉ số lượng bài viết, nên một kích thước lô cố định hoạt động tốt trên site này có thể vượt quá giới hạn kích thước payload của Meilisearch (hoặc của reverse proxy) trên site khác. Giờ việc lập chỉ mục lại ngầm, nút “Lập chỉ mục ngay”, vàwp init-live-search meili-reindextự động chia nhỏ lô quá lớn và thử lại với payload nhỏ hơn; nếu một bài viết đơn lẻ vẫn quá lớn, nó sẽ bị bỏ qua (kèm cảnh báo liệt kê ID bài viết) thay vì chặn toàn bộ quá trình lập chỉ mục lại - Đã sửa: chỉ báo tiến trình lập chỉ mục lại của Meilisearch (trang Cài đặt + polling trực tiếp) trước đây có thể dừng sớm do cùng loại tín hiệu “không chạy” sai như mô tả ở trên, cần phải tải lại thủ công để hiển thị tiến trình chính xác
- Thay đổi: việc lập chỉ mục lại không còn yêu cầu phải đánh dấu chọn “Enable Meilisearch”. Nút “Lập chỉ mục ngay”, tác vụ cron ngầm, và
wp init-live-search meili-reindexgiờ chỉ cần điền Host và Index — hữu ích khi xây dựng hoặc thử nghiệm một chỉ mục mới trong lúc nguồn tìm kiếm hiện tại (cơ sở dữ liệu hoặc một chỉ mục Meilisearch đã có) vẫn đang hoạt động, mà không cần chuyển sang dùng ngay. Tự động đồng bộ khi lưu/xóa vẫn chỉ bắt đầu khi ô đánh dấu được bật, như trước đây
1.9.5 – 3 tháng 8, 2026
- Hiệu năng: đã sửa lỗi truy vấn N+1 khi xây dựng danh sách kết quả tìm kiếm/bài viết liên quan — bộ nhớ đệm post, postmeta, và term cho toàn bộ lô giờ được nạp trước cùng một lúc trước khi hiển thị, thay vì chạy truy vấn mới cho từng kết quả
- Mới: Chỉ mục Tìm kiếm FULLTEXT (tùy chọn tham gia): đã thêm một bảng chỉ mục FULLTEXT của MySQL tùy chọn như một giải pháp thay thế nhanh hơn cho
LIKE '%term%'khi khớp Tiêu đề/Đoạn trích/Nội dung trên quy trình tìm kiếm cơ sở dữ liệu tiêu chuẩn — tăng tốc đáng kể trên các site có nhiều bài viết - An toàn: chỉ mục FULLTEXT tắt theo mặc định và chỉ có hiệu lực khi khả năng hỗ trợ của máy chủ đã được xác nhận và chỉ mục đã được xây dựng xong hoàn toàn; cho đến lúc đó, plugin vẫn âm thầm tiếp tục dùng tìm kiếm LIKE hiện có
- Tự động lập chỉ mục: khi bật, chỉ mục FULLTEXT sẽ tự động xây dựng ngầm qua WP-Cron (~300 bài viết mỗi 5 giây) — không cần quyền truy cập SSH/WP-CLI.
- WP-CLI: đã thêm
wp init-live-search fulltext-reindexđể xây dựng hoặc xây dựng lại chỉ mục FULLTEXT thủ công/nhanh hơn - Không bị ảnh hưởng: Tìm kiếm theo thẻ tag, metadata SEO, trường ACF, mở rộng từ đồng nghĩa, và các toán tử +/- không bị ảnh hưởng bởi thay đổi của chỉ mục FULLTEXT và tiếp tục hoạt động chính xác như trước.
- Meilisearch: nút “Lập chỉ mục ngay”: được thêm vào tab cài đặt Meilisearch để các site không có quyền truy cập WP-CLI/SSH cũng có thể xây dựng hoặc xây dựng lại chỉ mục — chạy ngầm (~200 bài viết mỗi 5 giây) kèm trạng thái tiến trình trực tiếp
- Meilisearch: giãn lùi khi có lỗi: việc lập chỉ mục lại ngầm sẽ tự động dừng kèm thông báo lỗi rõ ràng sau 3 lô thất bại liên tiếp, thay vì thử lại mãi mãi với một máy chủ bên ngoài
- Meilisearch: chỉ chạy thủ công theo thiết kế: khác với chỉ mục FULLTEXT, việc lập chỉ mục lại ngầm không bao giờ tự khởi động — Meilisearch là dịch vụ bên ngoài do người dùng sở hữu, có thể mất phí, nên nó chỉ chạy khi được khởi động rõ ràng qua nút bấm hoặc
wp init-live-search meili-reindex
1.9.4 – 20 tháng 7, 2026
- Đã sửa: các trường Search API Key và Admin/Indexing Key trên tab cài đặt Meilisearch trước đây có thể bị trình quản lý mật khẩu đã lưu của trình duyệt tự động điền âm thầm, gây nguy cơ vô tình lộ một mật khẩu đã lưu không liên quan nếu form được gửi mà không kiểm tra kỹ. Các trường này giờ đã được loại trừ đúng cách khỏi tính năng tự động điền
- Đã sửa: nút “Kiểm tra kết nối” trên tab cài đặt Meilisearch trước đây luôn hiển thị “? documents” thay vì số lượng tài liệu ước tính thực tế, do sai lệch tên gọi giữa phản hồi kiểm tra kết nối và script hiển thị
- Chất lượng mã nguồn: đã chuyển JavaScript “Kiểm tra kết nối” của Meilisearch ra khỏi khối
<script>nội tuyến sangadmin.js(được enqueue đúng cách quawp_enqueue_script), tuân theo WordPress Coding Standards; các chuỗi đã dịch được truyền quawp_localize_scriptnên các bản dịch hiện có không bị ảnh hưởng
1.9.3 – 20 tháng 7, 2026
- Tích hợp Meilisearch (tùy chọn): đã thêm tab cài đặt “Meilisearch” mới để kết nối một instance Meilisearch tự lưu trữ (tự có máy chủ riêng) làm nguồn tìm kiếm chính. Khi được bật và có thể truy cập, các yêu cầu tìm kiếm sẽ được xử lý bởi công cụ chịu lỗi chính tả, xếp hạng theo mức độ liên quan của Meilisearch; nếu yêu cầu thất bại hoặc hết thời gian chờ vì bất kỳ lý do gì, plugin sẽ tự động chuyển về tìm kiếm cơ sở dữ liệu cục bộ hiện có — tìm kiếm không bao giờ ngừng hoạt động chỉ vì Meilisearch gặp sự cố
- Tự động đồng bộ khi Lưu/Xóa: việc xuất bản, cập nhật, chuyển vào thùng rác, hoặc xóa một bài viết giờ tự động đẩy/xóa tài liệu tương ứng trong chỉ mục Meilisearch đã cấu hình (không chặn, không làm chậm việc lưu trong trình soạn thảo)
- Lệnh WP-CLI: đã thêm
wp init-live-search meili-reindexđể lập chỉ mục hàng loạt (hoặc xây dựng lại) toàn bộ bài viết đã xuất bản thuộc các loại bài viết được bật vào Meilisearch. - Kiểm tra kết nối: đã thêm tính năng kiểm tra kết nối chỉ với một cú nhấp trên tab cài đặt Meilisearch
- Bảo mật: khóa API nhạy cảm dùng để lập chỉ mục/quản trị giờ có thể được định nghĩa qua hằng số
INIT_LIVE_SEARCH_MEILI_ADMIN_KEYtrongwp-config.php(khuyến nghị) thay vì lưu trong cơ sở dữ liệu - i18n: mọi chuỗi giao diện mới đều dùng tiếng Anh làm nguồn (msgid) với text domain
init-live-search, theo chuẩn của WordPress.org; đã tạo lại.potvà cập nhật bản dịch tiếng Việt.po/.movới 27 chuỗi mới/trước đây còn thiếu đã được dịch
1.9.2 – 17 tháng 7, 2026
- Sửa lỗi tranh chấp thời điểm (race condition): các yêu cầu tìm kiếm trong modal (
script.js) giờ dùngAbortControllerđể hủy các yêu cầu đang chờ đã lỗi thời khi người dùng tiếp tục gõ, ngăn các phản hồi cũ/chậm hơn ghi đè lên kết quả tìm kiếm mới hơn - Thiết kế lại toán tử tìm kiếm +/-:
+word/-wordgiờ đúng nghĩa thu hẹp kết quả của các từ khóa tìm kiếm thông thường thay vì bị gộp chung vào cùng tập hợp mờ/dự phòng. Các từ thông thường vẫn dẫn dắt tìm kiếm cơ bản (với toàn bộ logic khớp mờ, từ đồng nghĩa, và dự phòng hiện có được giữ nguyên);+wordyêu cầu kết quả đã thu hẹp cũng phải chứa từ đó,-wordloại trừ các kết quả chứa nó — hỗ trợ nhiều toán tử+/-trong cùng một truy vấn (ví dụwordpress -plugin -theme) - Mở rộng từ điển có sẵn: đã mở rộng đáng kể các từ điển Thương mại điện tử, Công nghệ, Kinh doanh, và Sức khỏe (trước đây là những từ điển mỏng nhất trong 10 từ điển có sẵn) với hàng chục cặp từ đồng nghĩa Anh/Việt bổ sung, giúp chúng ngang bằng với các từ điển khác
- Dọn dẹp từ điển: đã sửa 4 khóa từ điển bị trùng lặp (
sale,visa,gym,vintage) trước đây âm thầm ghi đè lên các định nghĩa từ đồng nghĩa trước đó - Sửa lỗi nhỏ: đã thêm optional chaining còn thiếu trong
loadMoreRecent()để tránh khả năng lỗi khi một mục thiếu thuộc tínhdata-url; đã chuẩn hóa việc so sánh URL có/không dấu gạch chéo cuối trongloadMoreGeneric()để tránh trùng lặp mục khi tải thêm kết quả
1.9.1 – 7 tháng 7, 2026
- Điều kiện lệnh Related Posts: đã thêm hai cài đặt điều kiện mới cho lệnh mặc định “/related” — giới hạn tự động chạy chỉ trên trang bài viết đơn, và loại trừ các từ khóa slug URL cụ thể
- Bảo vệ lệnh mặc định thông minh: frontend giờ kiểm tra
related_only_singlevàrelated_exclude_slugstrước khi tự động chèn/relatedvào modal tìm kiếm, ngăn các lượt tìm kiếm liên quan không mong muốn trên trang lưu trữ, trang tĩnh, hoặc các đường dẫn bị loại trừ - Trải nghiệm cài đặt: các tùy chọn liên quan đến lệnh được làm mờ trực quan và không thể tương tác khi “Related Posts” không được chọn làm lệnh gạch chéo mặc định
- Làm sạch dữ liệu:
related_only_singlevàrelated_exclude_slugsgiờ được làm sạch đúng cách qua quy trình cài đặt hiện có với việc cắt gọn từ khóa và kiểm tra theo từng dòng
1.9.0 – 12 tháng 5, 2026
- Ảnh thu nhỏ dự phòng: đã thêm tùy chọn mới “Dùng ảnh đầu tiên làm ảnh thu nhỏ dự phòng?” — tự động trích xuất ảnh đầu tiên từ nội dung bài viết khi không có ảnh đại diện
- Phát hiện gốc theo WordPress: công cụ dự phòng giờ ưu tiên phân tích các lớp
wp-image-{ID}và lấy đúng kích thước ảnh thu nhỏ của WordPress bằng metadata của tệp đính kèm - Chuỗi dự phòng thông minh: nếu việc tra cứu tệp đính kèm thất bại, plugin sẽ chuyển một cách mượt mà sang URL thô từ
<img src="">trước khi dùng ảnh thu nhỏ mặc định - Kiểm tra host: URL ảnh bên ngoài được kiểm tra đối chiếu với host/tên miền phụ của site hiện tại theo mặc định để ngăn hotlink không mong muốn từ bên thứ ba
- Khả năng mở rộng cho lập trình viên: giới thiệu filter mới
init_plugin_suite_live_search_allow_fallback_image_hostđể tùy chỉnh các host ảnh dự phòng được phép - Tích hợp cài đặt: đã thêm đầy đủ cài đặt quản trị, quy trình làm sạch dữ liệu, và hỗ trợ dịch thuật cho tính năng ảnh thu nhỏ dự phòng mới
Xem toàn bộ nhật ký thay đổi (mọi phiên bản): Init Live Search – Changelog
