{"id":234567,"date":"2025-05-22T11:43:26","date_gmt":"2025-05-22T11:43:26","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/init-live-search\/"},"modified":"2026-02-25T02:52:33","modified_gmt":"2026-02-25T02:52:33","slug":"init-live-search","status":"publish","type":"plugin","link":"https:\/\/szl.wordpress.org\/plugins\/init-live-search\/","author":14479633,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.8.9","stable_tag":"1.8.9","tested":"6.9.4","requires":"5.2","requires_php":"7.4","requires_plugins":null,"header_name":"Init Live Search","header_author":"Init HTML","header_description":"A fast, lightweight, and smart live search modal built with Vanilla JS and powered by the WordPress REST API.","assets_banners_color":"db85b3","last_updated":"2026-02-25 02:52:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/inithtml.com\/plugin\/init-live-search\/","header_author_uri":"https:\/\/inithtml.com\/","rating":5,"author_block_rating":0,"active_installs":100,"downloads":2891,"num_ratings":6,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3":{"tag":"1.3","author":"brokensmile.2103","date":"2025-05-22 13:30:19"},"1.4":{"tag":"1.4","author":"brokensmile.2103","date":"2025-05-23 09:30:44"},"1.4.1":{"tag":"1.4.1","author":"brokensmile.2103","date":"2025-05-23 15:49:12"},"1.4.2":{"tag":"1.4.2","author":"brokensmile.2103","date":"2025-05-24 07:24:22"},"1.4.3":{"tag":"1.4.3","author":"brokensmile.2103","date":"2025-05-24 14:33:59"},"1.5":{"tag":"1.5","author":"brokensmile.2103","date":"2025-05-25 13:00:12"},"1.5.1":{"tag":"1.5.1","author":"brokensmile.2103","date":"2025-05-26 06:00:28"},"1.5.2":{"tag":"1.5.2","author":"brokensmile.2103","date":"2025-05-26 14:41:17"},"1.5.3":{"tag":"1.5.3","author":"brokensmile.2103","date":"2025-05-26 17:53:58"},"1.5.4":{"tag":"1.5.4","author":"brokensmile.2103","date":"2025-05-27 09:02:35"},"1.6":{"tag":"1.6","author":"brokensmile.2103","date":"2025-05-27 15:19:47"},"1.6.1":{"tag":"1.6.1","author":"brokensmile.2103","date":"2025-05-28 10:11:07"},"1.6.2":{"tag":"1.6.2","author":"brokensmile.2103","date":"2025-05-28 14:12:52"},"1.6.3":{"tag":"1.6.3","author":"brokensmile.2103","date":"2025-05-29 10:36:30"},"1.6.4":{"tag":"1.6.4","author":"brokensmile.2103","date":"2025-05-30 07:12:42"},"1.6.5":{"tag":"1.6.5","author":"brokensmile.2103","date":"2025-05-30 14:07:48"},"1.6.6":{"tag":"1.6.6","author":"brokensmile.2103","date":"2025-05-30 18:17:02"},"1.6.7":{"tag":"1.6.7","author":"brokensmile.2103","date":"2025-06-05 15:49:56"},"1.6.8":{"tag":"1.6.8","author":"brokensmile.2103","date":"2025-06-07 17:24:03"},"1.6.9":{"tag":"1.6.9","author":"brokensmile.2103","date":"2025-06-08 06:12:43"},"1.7.0":{"tag":"1.7.0","author":"brokensmile.2103","date":"2025-06-11 07:12:28"},"1.7.1":{"tag":"1.7.1","author":"brokensmile.2103","date":"2025-06-14 18:32:52"},"1.7.2":{"tag":"1.7.2","author":"brokensmile.2103","date":"2025-06-16 06:45:37"},"1.7.3":{"tag":"1.7.3","author":"brokensmile.2103","date":"2025-06-19 15:19:34"},"1.7.4":{"tag":"1.7.4","author":"brokensmile.2103","date":"2025-06-25 17:08:59"},"1.7.5":{"tag":"1.7.5","author":"brokensmile.2103","date":"2025-06-26 06:52:11"},"1.7.6":{"tag":"1.7.6","author":"brokensmile.2103","date":"2025-06-30 15:40:05"},"1.7.7":{"tag":"1.7.7","author":"brokensmile.2103","date":"2025-07-15 20:24:56"},"1.7.8":{"tag":"1.7.8","author":"brokensmile.2103","date":"2025-07-29 15:03:33"},"1.7.9":{"tag":"1.7.9","author":"brokensmile.2103","date":"2025-08-09 16:08:16"},"1.8.0":{"tag":"1.8.0","author":"brokensmile.2103","date":"2025-08-16 06:36:39"},"1.8.1":{"tag":"1.8.1","author":"brokensmile.2103","date":"2025-08-26 06:34:39"},"1.8.2":{"tag":"1.8.2","author":"brokensmile.2103","date":"2025-08-28 19:32:19"},"1.8.3":{"tag":"1.8.3","author":"brokensmile.2103","date":"2025-08-30 06:52:55"},"1.8.4":{"tag":"1.8.4","author":"brokensmile.2103","date":"2025-09-17 17:43:35"},"1.8.5":{"tag":"1.8.5","author":"brokensmile.2103","date":"2025-10-14 18:23:32"},"1.8.6":{"tag":"1.8.6","author":"brokensmile.2103","date":"2025-11-09 15:45:45"},"1.8.7":{"tag":"1.8.7","author":"brokensmile.2103","date":"2025-12-12 04:17:02"},"1.8.8":{"tag":"1.8.8","author":"brokensmile.2103","date":"2026-02-23 08:48:21"},"1.8.9":{"tag":"1.8.9","author":"brokensmile.2103","date":"2026-02-25 02:52:33"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":6},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3298714,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3298714,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3298714,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3298714,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3","1.4","1.4.1","1.4.2","1.4.3","1.5","1.5.1","1.5.2","1.5.3","1.5.4","1.6","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.8.0","1.8.1","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8","1.8.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3309578,"resolution":"1","location":"assets","locale":""},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3309578,"resolution":"10","location":"assets","locale":""},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3309578,"resolution":"11","location":"assets","locale":""},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3309578,"resolution":"12","location":"assets","locale":""},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3309578,"resolution":"13","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3317778,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3309578,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3318019,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3336049,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3309578,"resolution":"6","location":"assets","locale":""},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3309578,"resolution":"7","location":"assets","locale":""},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3309578,"resolution":"8","location":"assets","locale":""},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3309578,"resolution":"9","location":"assets","locale":""}},"screenshots":{"1":"Search Triggers: input focus, Ctrl + \/, triple click, <code>data-ils<\/code> attribute","2":"Search Behavior: post types, slash commands, fallback, SEO fields","3":"Performance &amp; UX: debounce, max results, caching, analytics, voice input","4":"Styling &amp; Suggestions: UI style, custom CSS, suggestions, UTM tracking","5":"Synonym Configuration: define and auto-expand keyword mappings","6":"Search Analytics: view logs, result count, export CSV","7":"Modal UI: clean interface with suggestions and instant results","8":"Results View: filter pills, post types, contextual excerpts","9":"Dark Mode: automatic or manual toggle for night-friendly UI","10":"Slash Command Helper: real-time dropdown with command list","11":"WooCommerce Search: product results with price, stock, sale badge","12":"Fullscreen Style: overlay modal using <code>style-full.css<\/code> preset","13":"Topbar Style: fixed top bar layout using <code>style-topbar.css<\/code> preset"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[220145,5185,1089,184981,286],"plugin_category":[45],"plugin_contributors":[242666],"plugin_business_model":[],"class_list":["post-234567","plugin","type-plugin","status-publish","hentry","plugin_tags-ai-search","plugin_tags-live-search","plugin_tags-related-posts","plugin_tags-slash-commands","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-brokensmile2103-1","plugin_committers-brokensmile2103-1"],"banners":{"banner":"https:\/\/ps.w.org\/init-live-search\/assets\/banner-772x250.png?rev=3298714","banner_2x":"https:\/\/ps.w.org\/init-live-search\/assets\/banner-1544x500.png?rev=3298714","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/init-live-search\/assets\/icon-128x128.png?rev=3298714","icon_2x":"https:\/\/ps.w.org\/init-live-search\/assets\/icon-256x256.png?rev=3298714","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-1.png?rev=3309578","caption":"Search Triggers: input focus, Ctrl + \/, triple click, <code>data-ils<\/code> attribute"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-2.png?rev=3317778","caption":"Search Behavior: post types, slash commands, fallback, SEO fields"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-3.png?rev=3309578","caption":"Performance &amp; UX: debounce, max results, caching, analytics, voice input"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-4.png?rev=3318019","caption":"Styling &amp; Suggestions: UI style, custom CSS, suggestions, UTM tracking"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-5.png?rev=3336049","caption":"Synonym Configuration: define and auto-expand keyword mappings"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-6.png?rev=3309578","caption":"Search Analytics: view logs, result count, export CSV"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-7.png?rev=3309578","caption":"Modal UI: clean interface with suggestions and instant results"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-8.png?rev=3309578","caption":"Results View: filter pills, post types, contextual excerpts"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-9.png?rev=3309578","caption":"Dark Mode: automatic or manual toggle for night-friendly UI"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-10.png?rev=3309578","caption":"Slash Command Helper: real-time dropdown with command list"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-11.png?rev=3309578","caption":"WooCommerce Search: product results with price, stock, sale badge"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-12.png?rev=3309578","caption":"Fullscreen Style: overlay modal using <code>style-full.css<\/code> preset"},{"src":"https:\/\/ps.w.org\/init-live-search\/assets\/screenshot-13.png?rev=3309578","caption":"Topbar Style: fixed top bar layout using <code>style-topbar.css<\/code> preset"}],"raw_content":"<!--section=description-->\n<p>Deliver an ultra-responsive search experience to your visitors \u2014 no page reloads, no jQuery, no lag. Init Live Search is a modern, lightweight, and fully accessible live search solution for WordPress \u2014 now with tag-aware matching, SEO metadata support, ACF integration, WooCommerce product filters, and customizable UI presets.<\/p>\n\n<p>It replaces the default <code>&lt;input name=\"s\"&gt;<\/code> with a clean, intuitive search modal powered entirely by the WordPress REST API. Everything loads in real-time \u2014 with zero disruption to browsing flow.<\/p>\n\n<p>Perfect for content-heavy blogs, WooCommerce stores, or even headless sites. Every interaction is fast, fluid, and designed to work across devices.<\/p>\n\n<p>It also brings AI-powered related posts and an advanced keyword generator \u2014 giving your visitors smarter ways to discover content.<\/p>\n\n<p>This plugin is part of the <a href=\"https:\/\/en.inithtml.com\/init-plugin-suite-minimalist-powerful-and-free-wordpress-plugins\/\">Init Plugin Suite<\/a> \u2014 a collection of minimalist, fast, and developer-focused tools for WordPress.<\/p>\n\n<p>GitHub repository: <a href=\"https:\/\/github.com\/brokensmile2103\/init-live-search\">https:\/\/github.com\/brokensmile2103\/init-live-search<\/a><\/p>\n\n<h3>What's New in Version 1.8.x<\/h3>\n\n<ul>\n<li><p><strong>AI-Powered Related Posts<\/strong>: brand new <code>[init_live_search_related_ai]<\/code> shortcode<\/p>\n\n<ul>\n<li>Uses multi-signal scoring (tags, series, title bigrams, same_keyword via ACF, category, views, comments, freshness)  <\/li>\n<li>Shares templates with <code>[init_live_search_related_posts]<\/code> (no extra styling needed)  <\/li>\n<li>Fully filterable via new developer hooks: <code>ai_candidates<\/code>, <code>ai_signals<\/code>, <code>ai_weights<\/code>, <code>ai_score<\/code><\/li>\n<\/ul><\/li>\n<li><p><strong>Advanced Keyword Generator<\/strong>: upgraded algorithm for admin keyword suggestions<\/p>\n\n<ul>\n<li>Replaced TF-IDF with <strong>BM25<\/strong> term weighting  <\/li>\n<li>Added <strong>NPMI<\/strong> (fixed probability base) and <strong>Log-Likelihood Ratio (Dunning)<\/strong> for collocation strength  <\/li>\n<li>Generates <strong>bigrams and trigrams<\/strong> for richer, more specific keyword suggestions  <\/li>\n<li><strong>Cross-document frequency penalty<\/strong> down-ranks phrases that are too generic across the site  <\/li>\n<li><strong>MMR (Maximal Marginal Relevance)<\/strong> selection ensures diverse, non-redundant final keywords  <\/li>\n<li>Title-only source: clean signal, no excerpt noise, works reliably across all site types  <\/li>\n<li>Unicode-safe, locale-aware stop words (Vietnamese &amp; English), and soft fallback mode<\/li>\n<\/ul><\/li>\n<li><p><strong>404 Smart Redirect<\/strong><\/p>\n\n<ul>\n<li>Added \"Auto Redirect 404 to Best Match\" mode driven by Init Live Search scoring<\/li>\n<li>Fully respects \"Post Types to Include\" settings<\/li>\n<li>Uses unified resolver + filters for extensible post-type handling<\/li>\n<li>Safety checks to avoid loops, invalid targets, and cross-type mismatches<\/li>\n<\/ul><\/li>\n<li><p><strong>Developer Filters Expansion<\/strong><\/p>\n\n<ul>\n<li>New filters added for AI related posts and keyword signals  <\/li>\n<li>Complete list now includes over 20 filters (<code>*_fallback<\/code>, <code>*_post_ids<\/code>, <code>*_results<\/code>, <code>*_weights<\/code>, <code>*_commands<\/code>, etc.)  <\/li>\n<li>Developers can hook into candidate pools, signal scores, and schema output with fine-grained control<\/li>\n<\/ul><\/li>\n<li><p><strong>Performance Optimizations<\/strong><\/p>\n\n<ul>\n<li>Smarter candidate pooling for related posts (recent + context-based)  <\/li>\n<li>Pre-cached scoring loop for AI signals to minimize queries  <\/li>\n<li>Safer regex handling in keyword processing to avoid PCRE errors  <\/li>\n<li>Reduced memory footprint in bigram statistics without sacrificing accuracy<\/li>\n<\/ul><\/li>\n<li><p><strong>Backward Compatible Enhancements<\/strong><\/p>\n\n<ul>\n<li><code>[init_live_search_related_posts]<\/code> and <code>[init_live_search_related_ai]<\/code> now share the same rendering pipeline  <\/li>\n<li>Existing templates, schema, and CSS continue to work without modification  <\/li>\n<li>Auto insert related posts still works and can be switched to AI mode via shortcode override<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<p>Packed with everything a modern live search needs \u2014 and more:<\/p>\n\n<ul>\n<li>Live search via REST API (no admin-ajax, no jQuery)<\/li>\n<li>Smart tag-aware search mode (title + tag match)<\/li>\n<li>SEO metadata support: Yoast, Rank Math, AIOSEO, SEOPress, TSF<\/li>\n<li>ACF field matching and customizable filters<\/li>\n<li>Synonym expansion with fallback scoring logic<\/li>\n<li>Slash commands: <code>\/recent<\/code>, <code>\/popular<\/code>, <code>\/tag<\/code>, <code>\/id<\/code>, <code>\/sku<\/code>, <code>\/price<\/code>, <code>\/coupon<\/code>, etc.<\/li>\n<li>WooCommerce support: search by product, SKU, brand, attribute, variation, coupon<\/li>\n<li>Clean modal UI with keyboard navigation (<code>\u2191 \u2193 Enter Esc<\/code>)<\/li>\n<li>Optional voice input (SpeechRecognition)<\/li>\n<li>Tooltip Quick Search (select text to trigger)<\/li>\n<li>Favorites system via heart icon or <code>\/fav<\/code> commands<\/li>\n<li>Infinite scroll and smart category filter (no extra API)<\/li>\n<li>Deep linking: <code>?modal=search&amp;term=...<\/code><\/li>\n<li>New <code>[init_live_search]<\/code> shortcode: insert input or icon anywhere<\/li>\n<li>UI presets: default, fullscreen, topbar \u2014 with full CSS override<\/li>\n<li>Local caching + analytics (CSV export, no personal data)<\/li>\n<li>Developer-ready: custom slash commands, REST filters, JS hooks<\/li>\n<\/ul>\n\n<h3>Dark Mode Support<\/h3>\n\n<p>Enable dark mode for the modal by either:<\/p>\n\n<ol>\n<li><p>Adding the dark class:<\/p>\n\n<p>document.querySelector('#ils-modal')?.classList.add('dark');<\/p><\/li>\n<li><p>Or using a global config:<\/p>\n\n<p>window.InitPluginSuiteLiveSearchConfig = { theme: 'dark' };<\/p><\/li>\n<\/ol>\n\n<p>Options: <code>dark<\/code>, <code>light<\/code>, <code>auto<\/code><\/p>\n\n<h3>Admin Settings<\/h3>\n\n<ul>\n<li>Choose post types to include in search  <\/li>\n<li>Configure modal triggers (input focus, triple click, Ctrl+\/)  <\/li>\n<li>Enable slash commands (e.g. \/recent, \/tag, \/id)  <\/li>\n<li>Enable support for <code>+<\/code> and <code>-<\/code> keyword operators (must-have, must-not-have)  <\/li>\n<li>Set default slash command to run on modal open (only if slash is enabled)   <\/li>\n<li>Set debounce time and max results  <\/li>\n<li>Choose search mode (title-only, tag-aware, full content)  <\/li>\n<li>Define custom ACF fields to include in search (optional)  <\/li>\n<li>Enable Search in SEO Metadata (Yoast, Rank Math, etc.)  <\/li>\n<li>Toggle excerpt display below each result (1-line contextual snippet)  <\/li>\n<li>Toggle fallback logic (bigram\/trim)  <\/li>\n<li>Enable synonym expansion and manage synonym mappings (JSON editor)  <\/li>\n<li>Enable Search Analytics to log queries (no personal data stored)  <\/li>\n<li>Set max words for tooltip search  <\/li>\n<li>Enable voice input (SpeechRecognition API)  <\/li>\n<li>Enable result caching (localStorage)  <\/li>\n<li>Choose frontend UI style (default, fullscreen, or topbar)  <\/li>\n<li>Allow theme override via <code>init-live-search\/style.css<\/code>  <\/li>\n<li>Automatically insert related posts after content or comments (optional)<\/li>\n<li>Option to disable all built-in CSS completely  <\/li>\n<li>Add default UTM parameter to result links  <\/li>\n<li>Define or auto-generate keyword suggestions<\/li>\n<\/ul>\n\n<h3>Keyboard Shortcuts<\/h3>\n\n<ul>\n<li>Arrow Up \/ Down \u2014 navigate between results<\/li>\n<li>Arrow Right \u2014 add selected result to favorites (if not already added)<\/li>\n<li>Arrow Left \u2014 remove selected result from favorites<\/li>\n<li>Enter \u2014 open selected result or submit<\/li>\n<li>Escape \u2014 close modal and reset state<\/li>\n<li>Slash (\/) \u2014 start a command instantly (e.g., <code>\/recent<\/code>, <code>\/id 123<\/code>)<\/li>\n<\/ul>\n\n<h3>Developer Reference: Shortcodes, Filters, and Hooks<\/h3>\n\n<h3>Shortcodes<\/h3>\n\n<p><strong><code>[init_live_search]<\/code><\/strong>\nDisplay a search icon or input anywhere that opens the Init Live Search modal.<\/p>\n\n<p><strong>Attributes:<\/strong>\n- <code>type<\/code>: <code>icon<\/code> (default) or <code>input<\/code> \u2013 choose between a clickable icon or a search box<br \/>\n- <code>placeholder<\/code>: (optional) text inside the input if <code>type=\"input\"<\/code><br \/>\n- <code>label<\/code>: (optional) adds a label next to the icon if <code>type=\"icon\"<\/code><br \/>\n- <code>class<\/code>: (optional) add custom classes like <code>dark<\/code>, <code>my-style<\/code>, etc.<br \/>\n- <code>stroke_width<\/code>: (optional) set the stroke width for the search icon (default: <code>1<\/code>)<br \/>\n- <code>radius<\/code>: (optional) override the border radius of the input form (default: <code>9999px<\/code> from CSS; only applied if value differs)<\/p>\n\n<p><strong><code>[init_live_search_related_posts]<\/code><\/strong><br \/>\nDisplay a list of related posts (static HTML) based on post title or keyword, optimized for SEO and fully themable.<\/p>\n\n<p><strong>Attributes:<\/strong>\n- <code>id<\/code>: (optional) the post ID to find related posts for (defaults to current post)<br \/>\n- <code>count<\/code>: (optional) number of posts to display (default: <code>5<\/code>)<br \/>\n- <code>keyword<\/code>: (optional) override the keyword used for finding related posts<br \/>\n- <code>template<\/code>: (optional) layout template to use \u2014 <code>default<\/code>, <code>grid<\/code>, <code>classic<\/code>, <code>compact<\/code>, <code>thumbright<\/code><br \/>\n- <code>css<\/code>: <code>1<\/code> (default) or <code>0<\/code> \u2013 disable default CSS if you want to fully style it yourself<br \/>\n- <code>schema<\/code>: <code>1<\/code> (default) or <code>0<\/code> \u2013 disable JSON-LD <code>ItemList<\/code> output for SEO schema<\/p>\n\n<p><strong><code>[init_live_search_related_ai]<\/code><\/strong><br \/>\nDisplay a list of AI-powered related posts using multi-signal scoring (tags, series, title bigrams, same_keyword via ACF, category, views, comments, freshness).<br \/>\nUses the same templates as <code>[init_live_search_related_posts]<\/code>, so no extra styling is required.<\/p>\n\n<p><strong>Attributes:<\/strong>\n- <code>id<\/code>: (optional) the post ID to find related posts for (defaults to current post)<br \/>\n- <code>count<\/code>: (optional) number of posts to display (default: <code>5<\/code>)<br \/>\n- <code>post_type<\/code>: (optional) restrict results to one or more post types (default: <code>post<\/code>)<br \/>\n- <code>template<\/code>: (optional) layout template to use \u2014 <code>default<\/code>, <code>grid<\/code>, <code>classic<\/code>, <code>compact<\/code>, <code>thumbright<\/code><br \/>\n- <code>css<\/code>: <code>1<\/code> (default) or <code>0<\/code> \u2013 disable default CSS if you want to fully style it yourself<br \/>\n- <code>schema<\/code>: <code>1<\/code> (default) or <code>0<\/code> \u2013 disable JSON-LD <code>ItemList<\/code> output for SEO schema<\/p>\n\n<h3>Filters for Developers<\/h3>\n\n<p>Init Live Search includes many filters to help developers customize behavior and output at various stages of the search flow.<\/p>\n\n<p>Full documentation (with code samples &amp; advanced usage): <a href=\"https:\/\/en.inithtml.com\/wordpress\/using-filters-in-init-live-search\/\">Using Filters in Init Live Search<\/a><\/p>\n\n<p><strong>Popular filters<\/strong><\/p>\n\n<p><strong><code>init_plugin_suite_live_search_enable_fallback<\/code><\/strong><br \/>\nEnable or disable fallback logic when few results are found.<\/p>\n\n<p><strong><code>init_plugin_suite_live_search_post_ids<\/code><\/strong><br \/>\nCustomize the array of post IDs returned from the query.<\/p>\n\n<p><strong><code>init_plugin_suite_live_search_result_item<\/code><\/strong><br \/>\nModify each result item before it's sent in the response.<\/p>\n\n<p><strong><code>init_plugin_suite_live_search_results<\/code><\/strong><br \/>\nFilter the final array of results before being returned.<\/p>\n\n<p><strong><code>init_plugin_suite_live_search_query_args<\/code><\/strong><br \/>\nModify WP_Query arguments for different commands.<\/p>\n\n<p><strong><code>init_plugin_suite_live_search_ai_weights<\/code><\/strong><br \/>\nAdjust AI scoring weights for related posts.<\/p>\n\n<p>(...and more in the full docs)<\/p>\n\n<h3>REST API Endpoints<\/h3>\n\n<p>Fully documented, lightweight, and API-first endpoints. Ideal for headless or decoupled builds.<br \/>\nAll endpoints are under namespace: <code>initlise\/v1<\/code><\/p>\n\n<p>Full documentation (with examples &amp; parameters): <a href=\"https:\/\/en.inithtml.com\/wordpress\/list-of-rest-api-endpoints-in-init-live-search\/\">REST API Endpoints in Init Live Search<\/a><\/p>\n\n<p><strong>Popular endpoints<\/strong><\/p>\n\n<p><strong><code>\/search?term=example<\/code><\/strong><br \/>\nStandard search query (uses plugin settings like post types, search mode, fallback\u2026).<\/p>\n\n<p><strong><code>\/id\/{id}<\/code><\/strong><br \/>\nFetch a post by ID (returns permalink).<\/p>\n\n<p><strong><code>\/recent<\/code><\/strong><br \/>\nFetch the most recent posts.<\/p>\n\n<p><strong><code>\/tax?taxonomy=category&amp;term=slug-or-id<\/code><\/strong><br \/>\nFetch posts by taxonomy (category, tag, or custom).<\/p>\n\n<p><strong><code>\/related?title=page-title&amp;exclude=ID<\/code><\/strong><br \/>\nFetch posts related to the current page title.<\/p>\n\n<p><strong><code>\/product?...<\/code><\/strong><br \/>\nFetch WooCommerce products with flexible query parameters.<\/p>\n\n<p>(...and more in the full docs)<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is licensed under the GPLv2 or later.<br \/>\nYou are free to use, modify, and distribute it under the same license.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via the WordPress admin panel.<\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 Init Live Search<\/strong> to configure options.<\/li>\n<li>The search modal can be triggered by default using:\n\n<ul>\n<li>Focusing any <code>&lt;input name=\"s\"&gt;<\/code> field<\/li>\n<li>Pressing <strong>Ctrl + \/<\/strong> (or <strong>Cmd + \/<\/strong> on Mac)<\/li>\n<li>Triple-clicking anywhere on the page (within 0.5s)<\/li>\n<li>Clicking an element with a <code>data-ils<\/code> attribute<\/li>\n<li>Visiting a URL with <code>#search<\/code> or <code>?modal=search&amp;term=your+keyword<\/code><\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20use%20jquery%3F\"><h3>Does this plugin use jQuery?<\/h3><\/dt>\n<dd><p>No. It's built entirely with modern Vanilla JavaScript \u2014 no jQuery, no external dependencies.<\/p><\/dd>\n<dt id=\"can%20i%20insert%20the%20search%20box%20anywhere%20on%20the%20page%3F\"><h3>Can I insert the search box anywhere on the page?<\/h3><\/dt>\n<dd><p>Yes. Use the <code>[init_live_search]<\/code> shortcode to insert a search input or icon anywhere. You can also add custom classes or enable dark mode.<\/p><\/dd>\n<dt id=\"how%20is%20the%20search%20triggered%3F\"><h3>How is the search triggered?<\/h3><\/dt>\n<dd><p>By default, it binds to any <code>&lt;input name=\"s\"&gt;<\/code>. You can also trigger it via:<br \/>\n- Ctrl + \/ (or Cmd + \/)<br \/>\n- Triple-click on blank space<br \/>\n- Text selection tooltip<br \/>\n- <code>?modal=search<\/code> in the URL<br \/>\n- Any element with <code>data-ils<\/code> attribute<\/p><\/dd>\n<dt id=\"can%20i%20prefill%20the%20modal%20from%20a%20link%3F\"><h3>Can I prefill the modal from a link?<\/h3><\/dt>\n<dd><p>Yes. Append <code>?modal=search&amp;term=your+keyword<\/code> or <code>#search<\/code> to any URL to prefill the modal and trigger it.<\/p><\/dd>\n<dt id=\"is%20voice%20search%20supported%3F\"><h3>Is voice search supported?<\/h3><\/dt>\n<dd><p>Yes. It uses the browser's SpeechRecognition API with auto-stop, language detection, and error handling.<\/p><\/dd>\n<dt id=\"what%20are%20slash%20commands%3F\"><h3>What are slash commands?<\/h3><\/dt>\n<dd><p>Slash commands are typed commands starting with <code>\/<\/code>, such as:<br \/>\n- <code>\/recent<\/code> \u2014 show latest posts<br \/>\n- <code>\/tag seo<\/code> \u2014 filter by tag<br \/>\n- <code>\/category news<\/code> \u2014 filter by category<br \/>\n- <code>\/id 123<\/code> \u2014 fetch a post by ID<br \/>\n- <code>\/fav<\/code>, <code>\/fav_clear<\/code> \u2014 manage favorites<br \/>\n- <code>\/random<\/code> \u2014 show a random post<br \/>\n- <code>\/history<\/code>, <code>\/history_clear<\/code> \u2014 manage recent search history<\/p>\n\n<p><strong>If WooCommerce is active:<\/strong><br \/>\n- <code>\/product<\/code>, <code>\/sku<\/code>, <code>\/price<\/code>, <code>\/stock<\/code>, <code>\/on-sale<\/code>, <code>\/coupon<\/code><\/p>\n\n<p><strong>If other Init plugins are active:<\/strong><br \/>\n- <code>\/popular<\/code>, <code>\/trending<\/code>, <code>\/day<\/code>, <code>\/week<\/code>, <code>\/month<\/code> \u2014 via <strong>Init View Count<\/strong><br \/>\n- <code>\/read<\/code> \u2014 via <strong>Init Reading Position<\/strong><\/p>\n\n<p>You can disable slash commands entirely in the plugin settings. Developers can register custom ones using the <code>init_plugin_suite_live_search_commands<\/code> filter.<\/p><\/dd>\n<dt id=\"what%20is%20the%20quick%20search%20tooltip%3F\"><h3>What is the Quick Search tooltip?<\/h3><\/dt>\n<dd><p>When users select 1\u20138 words, a floating tooltip appears to trigger an instant search. You can configure or disable it in settings.<\/p><\/dd>\n<dt id=\"does%20it%20support%20synonyms%20or%20alternate%20keywords%3F\"><h3>Does it support synonyms or alternate keywords?<\/h3><\/dt>\n<dd><p>Yes. You can define custom keyword \u2192 synonym mappings via the <strong>Synonyms<\/strong> tab in settings.<br \/>\nWhen enabled, the plugin will auto-expand search terms using these synonyms if few results are found.<\/p><\/dd>\n<dt id=\"can%20it%20search%20in%20seo%20fields%20and%20tags%3F\"><h3>Can it search in SEO fields and tags?<\/h3><\/dt>\n<dd><p>Yes. The plugin supports a special \"Smart Tag-Aware\" mode that matches both post titles and tags.<br \/>\nIt can also search inside SEO Titles and Meta Descriptions from plugins like Yoast SEO, Rank Math, AIOSEO, The SEO Framework, and SEOPress.<\/p><\/dd>\n<dt id=\"does%20it%20support%20woocommerce%3F\"><h3>Does it support WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. You can search for products by:<br \/>\n- Keyword<br \/>\n- SKU<br \/>\n- Price range (<code>\/price<\/code>)<br \/>\n- Stock status (<code>\/stock<\/code>)<br \/>\n- Sale status (<code>\/on-sale<\/code>)<br \/>\n- Brand, attribute, variation, and coupons (<code>\/coupon<\/code>)<\/p>\n\n<p>Results include title, price, stock status, and Add to Cart links.<\/p><\/dd>\n<dt id=\"does%20it%20support%20excerpts%20in%20search%20results%3F\"><h3>Does it support excerpts in search results?<\/h3><\/dt>\n<dd><p>Yes. It generates a 1-line contextual excerpt with the keyword highlighted for better scan-ability.<\/p><\/dd>\n<dt id=\"can%20this%20plugin%20automatically%20display%20related%20posts%20without%20using%20a%20shortcode%3F\"><h3>Can this plugin automatically display related posts without using a shortcode?<\/h3><\/dt>\n<dd><p>Yes. In the plugin settings, you can choose to automatically insert related posts after the content or around the comment section.<br \/>\nIt uses the <code>[init_live_search_related_posts]<\/code> shortcode internally with a default layout.<br \/>\nYou can still use the shortcode manually for full control.<\/p><\/dd>\n<dt id=\"can%20i%20override%20or%20disable%20the%20plugin%27s%20css%3F\"><h3>Can I override or disable the plugin's CSS?<\/h3><\/dt>\n<dd><p>Yes. You can:<br \/>\n- Drop <code>init-live-search\/style.css<\/code> in your theme<br \/>\n- Choose a built-in preset (<code>style-full.css<\/code>, <code>style-topbar.css<\/code>)<br \/>\n- Or disable all built-in CSS and style it from scratch<\/p><\/dd>\n<dt id=\"is%20it%20mobile-friendly%3F\"><h3>Is it mobile-friendly?<\/h3><\/dt>\n<dd><p>Yes. The modal is responsive with mobile optimizations like excerpt clamping and floating mic button.<\/p><\/dd>\n<dt id=\"is%20result%20caching%20supported%3F\"><h3>Is result caching supported?<\/h3><\/dt>\n<dd><p>Yes. It uses <code>localStorage<\/code> to cache search results and reduce repeat queries.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20track%20user%20data%3F\"><h3>Does the plugin track user data?<\/h3><\/dt>\n<dd><p>Only if <strong>Search Analytics<\/strong> is enabled. It logs:<br \/>\n- Search term<br \/>\n- Timestamp<br \/>\n- Result count<br \/>\nNo personal information (IP, user agent, etc.) is stored.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20press%20enter%20without%20selecting%20a%20result%3F\"><h3>What happens if I press Enter without selecting a result?<\/h3><\/dt>\n<dd><p>The plugin will redirect to WordPress's default search results page.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20in%20a%20headless%20setup%3F\"><h3>Can I use this in a headless setup?<\/h3><\/dt>\n<dd><p>Yes. All features are powered by REST API (<code>initlise\/v1<\/code>) \u2014 ideal for decoupled frontends.<\/p><\/dd>\n<dt id=\"can%20i%20preload%20a%20default%20slash%20command%20when%20the%20modal%20opens%3F\"><h3>Can I preload a default slash command when the modal opens?<\/h3><\/dt>\n<dd><p>Yes. In settings, you can define a default command like <code>\/recent<\/code>, <code>\/read<\/code>, or <code>\/related<\/code>. There's also a \"smart detection\" mode based on page context.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multiple%20languages%3F\"><h3>Does it support multiple languages?<\/h3><\/dt>\n<dd><p>Yes. It auto-detects the active language when Polylang or WPML is installed. You can also filter results via <code>init_plugin_suite_live_search_filter_lang<\/code>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.8.9 \u2013 February 25, 2026<\/h4>\n\n<ul>\n<li><strong>Keyword Generator v3<\/strong>: fully redesigned scoring pipeline for higher accuracy across diverse site types<\/li>\n<li><strong>Title-only source<\/strong>: removed excerpt from input \u2014 cleaner signal, no auto-generated noise, consistent across all WordPress sites<\/li>\n<li><strong>NPMI fix<\/strong>: corrected probability base so unigram and n-gram probabilities use a unified token count \u2014 eliminates score inflation from the previous implementation<\/li>\n<li><strong>Trigram support<\/strong>: generator now produces both bigrams and trigrams, surfacing longer, more specific keyword phrases<\/li>\n<li><strong>Cross-document frequency penalty<\/strong>: phrases appearing in more than 60% of posts are down-ranked \u2014 prevents generic terms from dominating results on content-heavy sites<\/li>\n<li><strong>MMR selection<\/strong>: replaced random shuffling with Maximal Marginal Relevance \u2014 final 15 keywords are guaranteed to be both high-scoring and semantically diverse<\/li>\n<li><strong>Expanded stop-word lists<\/strong>: broader coverage for Vietnamese and English, including common post-title filler words<\/li>\n<\/ul>\n\n<h4>1.8.8 \u2013 February 23, 2026<\/h4>\n\n<ul>\n<li><strong>Native Search Mode<\/strong>: added new option \"Use WordPress Native Search?\" \u2014 bypasses all custom logic and delegates to WP_Query's built-in <code>s<\/code> parameter for a simpler, lightweight search experience.<\/li>\n<li><strong>Third-party Compatibility<\/strong>: native mode automatically benefits from search plugins (e.g. SearchWP, ElasticPress) that hook into WP_Query, with zero extra configuration.<\/li>\n<li><strong>Settings UX<\/strong>: options incompatible with native mode (Search Mode, Fallback, Synonym, SEO Fields, ACF, Operators) are visually dimmed and non-interactive when the option is enabled.<\/li>\n<li><strong>Sanitization<\/strong>: <code>use_native_search<\/code> is properly sanitized and persisted via the existing settings flow.<\/li>\n<\/ul>\n\n<h4>1.8.7 \u2013 December 11, 2025<\/h4>\n\n<ul>\n<li><strong>404 Smart Redirect<\/strong>: added new option \"Auto Redirect 404 to Best Match\" \u2014 automatically redirects 404 pages to the most relevant post determined by Init Live Search.<\/li>\n<li><strong>Post Type Awareness<\/strong>: redirect engine now respects the plugin's \"Post Types to Include\" setting and works seamlessly with multiple post types.<\/li>\n<li><strong>Unified Resolver<\/strong>: 404 redirect now uses <code>init_plugin_suite_live_search_resolve_post_types()<\/code> and the filter <code>init_plugin_suite_live_search_post_types<\/code> for consistent, extensible post-type handling.<\/li>\n<li><strong>Safety &amp; Accuracy<\/strong>: redirect only triggers on valid, published posts and prevents unexpected loops or mismatches across post types.<\/li>\n<li><strong>Code Quality<\/strong>: improved sanitization of <code>$_SERVER['REQUEST_URI']<\/code> (unslash + sanitize), removed unsafe patterns, standardized function prefixes, and ensured PHPCS compliance.<\/li>\n<\/ul>\n\n<h4>1.8.6 \u2013 November 09, 2025<\/h4>\n\n<ul>\n<li><strong>Shortcode Enhancement<\/strong>: <code>[init_live_search]<\/code> now supports new attributes:\n  width, <code>max_width<\/code>, <code>align<\/code>, <code>id<\/code>, <code>name<\/code>, <code>aria_label<\/code>, <code>button<\/code> (show\/hide), and improved <code>radius<\/code>.<\/li>\n<li><strong>Security \/ Code Quality<\/strong>: escaped dynamic attributes, removed unsafe inline output, and improved PHPCS compliance.<\/li>\n<li><strong>SQL Safety<\/strong>: converted <code>LIMIT<\/code> values to <code>%d<\/code> and applied scoped PHPCS ignores for dynamic placeholder lists.<\/li>\n<\/ul>\n\n<h4>1.8.5 \u2013 October 15, 2025<\/h4>\n\n<ul>\n<li><strong>Fix<\/strong>: <code>.ils-cart-btn<\/code> now consistently redirects to the <strong>product page<\/strong> for <em>all<\/em> WooCommerce product types (simple, variable, grouped, etc.) instead of calling the AJAX <code>add_to_cart<\/code> endpoint that returned a JSON response<\/li>\n<li><strong>UX Consistency<\/strong>: ensures identical \"View Product\" behavior across all product types in live search results<\/li>\n<li><strong>Thanks<\/strong>: special thanks to <strong>m0n0brands<\/strong> for reporting and confirming the issue<\/li>\n<\/ul>\n\n<h4>1.8.4 \u2013 September 17, 2025<\/h4>\n\n<ul>\n<li><strong>Dev Filter<\/strong>: <code>init_plugin_suite_live_search_post_types<\/code> \u2013 allow themes\/plugins to modify or enforce post type list  <\/li>\n<li><strong>Example Use Case<\/strong>: ensure a custom post type (e.g. <code>manga<\/code>) is always included in search results without affecting plugin settings  <\/li>\n<li><strong>Code Quality<\/strong>: standardized return handling with <code>array_values(array_unique())<\/code> for consistent output<\/li>\n<\/ul>\n\n<h4>1.8.3 \u2013 August 30, 2025<\/h4>\n\n<ul>\n<li><strong>Fix<\/strong>: <code>\/coupon<\/code> REST endpoint \u2013 prevent 500 errors on expired or limited coupons  <\/li>\n<li><strong>Code Quality<\/strong>: added PHPCS ignores for complex SQL queries (placeholders, interpolated vars, direct queries)  <\/li>\n<li><strong>Stability<\/strong>: improved parameter checks and reduced false positives from PHPCS  <\/li>\n<\/ul>\n\n<h4>1.8.2 \u2013 August 26, 2025<\/h4>\n\n<ul>\n<li><strong>AI Related Posts Engine v2<\/strong>: dual signals (recency + time_gap), smarter diversification (MMR), safer cache versioning<\/li>\n<li><strong>Performance<\/strong>: pre-cache posts &amp; terms, deduplication, optimized scoring loop<\/li>\n<li><strong>Dev Filters<\/strong>: new controls for recency, gap decay, MMR \u03bb, and final candidate selection<\/li>\n<\/ul>\n\n<h4>1.8.1 \u2013 August 26, 2025<\/h4>\n\n<ul>\n<li><strong>AI-Powered Related Posts<\/strong>: new <code>[init_live_search_related_ai]<\/code> shortcode with multi-signal scoring (tags, series, categories, etc.)<\/li>\n<li><strong>Extensible API<\/strong>: inject candidates, extend signals, adjust weights, override scores<\/li>\n<li><strong>Performance<\/strong>: pre-cached post data, unified template rendering<\/li>\n<\/ul>\n\n<h4>1.8.0 \u2013 August 16, 2025<\/h4>\n\n<ul>\n<li><strong>Keyword Generator Upgrade<\/strong>: BM25 + NPMI + Log-Likelihood Ratio for high-quality bigrams<\/li>\n<li><strong>Bigram-Only Focus<\/strong>: stricter filtering, Unicode-safe, excludes noise terms<\/li>\n<li><strong>Resilience<\/strong>: fallback mode ensures at least 15 keywords per request<\/li>\n<li><strong>Performance<\/strong>: memory-efficient scoring, optimized regex, robust error handling<\/li>\n<\/ul>\n\n<p>View full changelog (all versions): <a href=\"https:\/\/en.inithtml.com\/plugin\/init-live-search\/\">Init Live Search \u2013 Changelog<\/a><\/p>","raw_excerpt":"Fast, modern live search powered by REST API \u2014 with AI-powered Related Posts Engine, slash commands, SEO-aware, ACF, Woo, and custom UI presets.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/234567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=234567"}],"author":[{"embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/brokensmile2103-1"}],"wp:attachment":[{"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=234567"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=234567"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=234567"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=234567"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=234567"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/szl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=234567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}