[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fAcDqlWXr9-7F7qoOC1FK_2mDRM0XiXybSNzFr27vNdI":3,"$fFeLGcb9nNeNs0Xhc6BN6hZoLp4hCcgbtWzkvNAF8fL8":33,"$fHX1jgGgbufwMeFJwztrblid1BXGL_KO8rpH1U0QTL7U":38},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":18,"download_link":19,"security_score":20,"vuln_count":11,"unpatched_count":11,"last_vuln_date":21,"fetched_at":22,"discovery_status":23,"vulnerabilities":24,"developer":25,"crawl_stats":21,"alternatives":32,"analysis":21,"fingerprints":21},"centous-ai-search-with-askiva","Centous AI Search with Askiva","1.0.0","Centous Solutions","https:\u002F\u002Fprofiles.wordpress.org\u002Fcentous\u002F","\u003Cp>Centous AI Search with Askiva is developed by \u003Ca href=\"https:\u002F\u002Fcentousplugins.com\u002F\" rel=\"nofollow ugc\">Centous\u003C\u002Fa>. It is \u003Cstrong>not\u003C\u002Fstrong> affiliated with, endorsed by, or an official product of Askiva. It connects your WordPress site to \u003Ca href=\"https:\u002F\u002Faskivasearch.com\u002F\" rel=\"nofollow ugc\">Askiva\u003C\u002Fa>, a third-party AI search platform, for indexing, semantic search, and streamed AI answers.\u003C\u002Fp>\n\u003Cp>This plugin connects your WordPress site to the Askiva backend for:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Content indexing\u003C\u002Fstrong>: batch sync of published posts\u002Fpages to Askiva\u003C\u002Fli>\n\u003Cli>\u003Cstrong>AI search\u003C\u002Fstrong>: semantic search with streamed AI answers (GFM Markdown)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rich results\u003C\u002Fstrong>: list or grid layout, thumbnails, pagination, “Read more” links\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Query help\u003C\u002Fstrong>: “Did you mean” suggestions when the API detects typos\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Admin tools\u003C\u002Fstrong>: connection settings, sync dashboard, statistics, logs\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The frontend search box uses AJAX by default: results and the AI answer load inline without a full page reload. Server-rendered results are still supported when a search URL contains a query parameter.\u003C\u002Fp>\n\u003Ch3>External services\u003C\u002Fh3>\n\u003Cp>This plugin connects to third-party Askiva services. An Askiva account is required. Centous does not operate these services.\u003C\u002Fp>\n\u003Ch3>Askiva account portal\u003C\u002Fh3>\n\u003Cp>Website: \u003Ca href=\"https:\u002F\u002Faskivasearch.com\u002F\" rel=\"nofollow ugc\">https:\u002F\u002Faskivasearch.com\u002F\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Used to register an account, add your WordPress site, and obtain your \u003Cstrong>Site Identifier\u003C\u002Fstrong> and \u003Cstrong>API Key\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>Data sent when you use the portal (in your browser, outside this plugin): account registration details and site information you enter when adding a site.\u003C\u002Fp>\n\u003Cp>Terms of use: \u003Ca href=\"https:\u002F\u002Faskiva.io\u002Flegal\u002Fterms-of-use\" rel=\"nofollow ugc\">https:\u002F\u002Faskiva.io\u002Flegal\u002Fterms-of-use\u003C\u002Fa>\u003Cbr \u002F>\nPrivacy policy: \u003Ca href=\"https:\u002F\u002Faskiva.io\u002Flegal\u002Fprivacy-policy\" rel=\"nofollow ugc\">https:\u002F\u002Faskiva.io\u002Flegal\u002Fprivacy-policy\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Askiva API\u003C\u002Fh3>\n\u003Cp>API endpoint (default): \u003Ccode>https:\u002F\u002Faskiva-bk.postyoulike.com\u002Fapi\u002Fv1\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Used to verify your connection, sync published WordPress content, run search queries, stream AI answers, and load dashboard statistics.\u003C\u002Fp>\n\u003Cp>Data sent from your WordPress site to the API:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>On connect (Verify Key):\u003C\u002Fstrong> Site Identifier and API Key\u003C\u002Fli>\n\u003Cli>\u003Cstrong>On sync:\u003C\u002Fstrong> published post\u002Fpage title, URL, slug, excerpt, plain-text content, headings, categories, and tags\u003C\u002Fli>\n\u003Cli>\u003Cstrong>On search:\u003C\u002Fstrong> search query, Site Identifier, API Key, pagination, and optional content type filter\u003C\u002Fli>\n\u003Cli>\u003Cstrong>On dashboard stats:\u003C\u002Fstrong> Site Identifier and API Key\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Data is sent only when you or a visitor triggers these actions (connect, sync, search, or when an administrator views the dashboard).\u003C\u002Fp>\n\u003Cp>Terms of use: \u003Ca href=\"https:\u002F\u002Faskiva.io\u002Flegal\u002Fterms-of-use\" rel=\"nofollow ugc\">https:\u002F\u002Faskiva.io\u002Flegal\u002Fterms-of-use\u003C\u002Fa>\u003Cbr \u002F>\nPrivacy policy: \u003Ca href=\"https:\u002F\u002Faskiva.io\u002Flegal\u002Fprivacy-policy\" rel=\"nofollow ugc\">https:\u002F\u002Faskiva.io\u002Flegal\u002Fprivacy-policy\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Configuration\u003C\u002Fh3>\n\u003Ch3>Create your Askiva account and site\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Register and log in at \u003Ca href=\"https:\u002F\u002Faskiva-ai-frontend.vercel.app\u002F\" rel=\"nofollow ugc\">Askiva\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>In the dashboard sidebar, click \u003Cstrong>Sites\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>On the Sites page, click \u003Cstrong>Add Site\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>In the popup, enter your website details and click \u003Cstrong>Add Site\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Your site appears in the list: click it to open the site detail page\u003C\u002Fli>\n\u003Cli>On the detail page, copy your \u003Cstrong>Site Identifier\u003C\u002Fstrong> and \u003Cstrong>API Key\u003C\u002Fstrong> (you will enter these in the WordPress plugin)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Connect your site\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Open \u003Cstrong>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong> in WordPress admin\u003C\u002Fli>\n\u003Cli>Enter your \u003Cstrong>Site ID\u003C\u002Fstrong> (the \u003Cstrong>Site Identifier\u003C\u002Fstrong> from the Askiva portal, e.g. \u003Ccode>my-site-aBc12XyZ\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>Enter your \u003Cstrong>Site Key\u003C\u002Fstrong> (the \u003Cstrong>API Key\u003C\u002Fstrong> from the Askiva portal)\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Verify Key\u003C\u002Fstrong>: the plugin calls \u003Ccode>POST \u002Fwp\u002Fverify\u003C\u002Fcode> to validate credentials\u003C\u002Fli>\n\u003Cli>When connected, Site ID and Site Key fields are locked until you disconnect\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Saved settings also include numeric \u003Ccode>api_site_id\u003C\u002Fcode> when the verify response returns one (used for search API compatibility).\u003C\u002Fp>\n\u003Ch3>Sync your content\u003C\u002Fh3>\n\u003Cp>After a successful connection:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Go to \u003Cstrong>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Sync\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Start Sync\u003C\u002Fstrong> to index your published WordPress content to Askiva\u003C\u002Fli>\n\u003Cli>Wait for the sync to complete (monitor progress and logs on the Sync page)\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>When sync finishes, your site content is available for AI search.\u003C\u002Fp>\n\u003Ch3>Enable search on your site\u003C\u002Fh3>\n\u003Cp>Add the search shortcode to any page or post:\u003Cbr \u002F>\n[askiva_search]\u003C\u002Fp>\n\u003Cp>Visitors can search your site and see streamed AI answers with semantic results. See \u003Cstrong>Usage\u003C\u002Fstrong> below for shortcode options and layout settings.\u003C\u002Fp>\n\u003Ch3>Search & display settings\u003C\u002Fh3>\n\u003Cp>Under \u003Cstrong>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cp>  Setting\u003Cbr \u002F>\n  Description\u003Cbr \u002F>\n  Default\u003C\u002Fp>\n\u003Cp>  Content Items per Index Cycle\u003Cbr \u002F>\n  Posts\u002Fpages sent per sync batch\u003Cbr \u002F>\n  10\u003C\u002Fp>\n\u003Cp>  Results Display Mode\u003Cbr \u002F>\n  \u003Ccode>list\u003C\u002Fcode> or \u003Ccode>grid\u003C\u002Fcode> for search results\u003Cbr \u002F>\n  list\u003C\u002Fp>\n\u003Cp>  Results per Page\u003Cbr \u002F>\n  Results shown per page (1–100)\u003Cbr \u002F>\n  10\u003C\u002Fp>\n\u003Cp>  Thumbnail Size\u003Cbr \u002F>\n  Result thumbnail size in px (48–400)\u003Cbr \u002F>\n  96\u003C\u002Fp>\n\u003Ch3>Advanced: API base URL (optional)\u003C\u002Fh3>\n\u003Cp>Note: Most users do not need this step. If you registered at \u003Ca href=\"https:\u002F\u002Faskiva-ai-frontend.vercel.app\u002F\" rel=\"nofollow ugc\">Askiva\u003C\u002Fa> and connect with your Site Identifier and API Key, the plugin uses its built-in API endpoint automatically.\u003C\u002Fp>\n\u003Cp>Override the API base URL only when Askiva support directs you to a different host (for example a staging environment or a custom API deployment). The URL must include the \u003Ccode>\u002Fapi\u002Fv1\u003C\u002Fcode> path.\u003C\u002Fp>\n\u003Cp>Option 1: \u003Ccode>wp-config.php\u003C\u002Fcode> (recommended)\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>define( ‘ASKIVA_API_BASE’, ‘https:\u002F\u002Fyour-askiva-api.example.com\u002Fapi\u002Fv1’ );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>Option 2: filter hook\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘askiva_api_base’, function () {\u003Cbr \u002F>\n    return ‘https:\u002F\u002Fyour-askiva-api.example.com\u002Fapi\u002Fv1’;\u003Cbr \u002F>\n} );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>If neither is set, the plugin uses \u003Ccode>https:\u002F\u002Faskiva-bk.postyoulike.com\u002Fapi\u002Fv1\u003C\u002Fcode> by default.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Ch3>Search shortcode\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>[askiva_search]\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>Place on any page, post, or widget area. Visitors search inline; the AI answer streams in and results appear below the form.\u003C\u002Fp>\n\u003Cp>Common setup:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Create a page (e.g. \u003Ccode>\u002Fsearch\u002F\u003C\u002Fcode>) with \u003Ccode>[askiva_search show_results=\"1\"]\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\n\u003Cp>For a header or sidebar button that redirects to your search page, use the popup shortcode:\u003C\u002Fp>\n\u003Cp>\u003Ccode>[askiva_search_popup results_url=\"\u002Fsearch\u002F\" trigger_text=\"Search\"]\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Optionally set a global results URL for the popup shortcode:\u003C\u002Fp>\n\u003Cp>\u003Ccode>php\u003Cbr \u002F>\nadd_filter( 'askiva_search_results_url', function () {\u003Cbr \u002F>\nreturn site_url( '\u002Fsearch\u002F' );\u003Cbr \u002F>\n} );\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Note: \u003Ccode>[askiva_search show_results=\"0\"]\u003C\u002Fcode> hides pre-loaded results on page load, but search still runs inline on that page via JavaScript. Use the popup shortcode to redirect visitors to a separate search page.\u003C\u002Fp>\n\u003Cp>Shortcode attributes:\u003C\u002Fp>\n\u003Cp>  Attribute\u003Cbr \u002F>\n  Type\u003Cbr \u002F>\n  Default\u003Cbr \u002F>\n  Description\u003C\u002Fp>\n\u003Cp>  \u003Ccode>placeholder\u003C\u002Fcode>\u003Cbr \u002F>\n  string\u003Cbr \u002F>\n  Search…\u003Cbr \u002F>\n  Input placeholder\u003C\u002Fp>\n\u003Cp>  \u003Ccode>button_text\u003C\u002Fcode>\u003Cbr \u002F>\n  string\u003Cbr \u002F>\n  Search\u003Cbr \u002F>\n  Button label (legacy)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>site_id\u003C\u002Fcode>\u003Cbr \u002F>\n  string\u003Cbr \u002F>\n  \u003Cem>(from settings)\u003C\u002Fem>\u003Cbr \u002F>\n  Override site ID; saved settings always win when set\u003C\u002Fp>\n\u003Cp>  \u003Ccode>type\u003C\u002Fcode>\u003Cbr \u002F>\n  string\u003Cbr \u002F>\n  \u003Cem>(empty)\u003C\u002Fem>\u003Cbr \u002F>\n  Optional content type filter sent to API\u003C\u002Fp>\n\u003Cp>  \u003Ccode>results_url\u003C\u002Fcode>\u003Cbr \u002F>\n  string\u003Cbr \u002F>\n  \u003Cem>(auto)\u003C\u002Fem>\u003Cbr \u002F>\n  Full URL or path for search results page\u003C\u002Fp>\n\u003Cp>  \u003Ccode>results_page_id\u003C\u002Fcode>\u003Cbr \u002F>\n  int\u003Cbr \u002F>\n  –\u003Cbr \u002F>\n  WordPress page ID for results (alternative to \u003Ccode>results_url\u003C\u002Fcode>)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>show_results\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>auto\u003C\u002Fcode> | \u003Ccode>0\u003C\u002Fcode> | \u003Ccode>1\u003C\u002Fcode>\u003Cbr \u002F>\n  auto\u003Cbr \u002F>\n  When to show results block (\u003Ccode>auto\u003C\u002Fcode> = when \u003Ccode>?q=\u003C\u002Fcode> is present)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>results_limit\u003C\u002Fcode>\u003Cbr \u002F>\n  int\u003Cbr \u002F>\n  \u003Cem>(from settings)\u003C\u002Fem>\u003Cbr \u002F>\n  Results per page (1–100)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>view_all_limit\u003C\u002Fcode>\u003Cbr \u002F>\n  int\u003Cbr \u002F>\n  50\u003Cbr \u002F>\n  Max results when “view all” is used\u003C\u002Fp>\n\u003Cp>  \u003Ccode>ajax\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>0\u003C\u002Fcode> | \u003Ccode>1\u003C\u002Fcode>\u003Cbr \u002F>\n  0\u003Cbr \u002F>\n  Legacy flag; JS still handles live search. Affects pagination scroll behavior\u003C\u002Fp>\n\u003Cp>  \u003Ccode>live\u003C\u002Fcode>\u003Cbr \u002F>\n  bool\u003Cbr \u002F>\n  false\u003Cbr \u002F>\n  Search while typing (debounced)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>min_chars\u003C\u002Fcode>\u003Cbr \u002F>\n  int\u003Cbr \u002F>\n  2\u003Cbr \u002F>\n  Minimum characters before search runs\u003C\u002Fp>\n\u003Cp>  \u003Ccode>debug\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Ccode>0\u003C\u002Fcode> | \u003Ccode>1\u003C\u002Fcode>\u003Cbr \u002F>\n  0\u003Cbr \u002F>\n  Pass debug flag to search API (admin troubleshooting)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>limit\u003C\u002Fcode>\u003Cbr \u002F>\n  int\u003Cbr \u002F>\n  10\u003Cbr \u002F>\n  Legacy AJAX limit\u003C\u002Fp>\n\u003Cp>URL query parameters:\u003C\u002Fp>\n\u003Cp>  Parameter\u003Cbr \u002F>\n  Default name\u003Cbr \u002F>\n  Purpose\u003C\u002Fp>\n\u003Cp>  Search query\u003Cbr \u002F>\n  \u003Ccode>q\u003C\u002Fcode>\u003Cbr \u002F>\n  Search term (\u003Ccode>askiva_q\u003C\u002Fcode> legacy alias still supported)\u003C\u002Fp>\n\u003Cp>  Page\u003Cbr \u002F>\n  \u003Ccode>askiva_page\u003C\u002Fcode>\u003Cbr \u002F>\n  Pagination\u003C\u002Fp>\n\u003Cp>  View all\u003Cbr \u002F>\n  \u003Ccode>view\u003C\u002Fcode>\u003Cbr \u002F>\n  Use \u003Ccode>view=all\u003C\u002Fcode> for expanded result limit\u003C\u002Fp>\n\u003Cp>Change the query parameter name:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add_filter( ‘askiva_search_query_param’, function () {\u003Cbr \u002F>\n    return ‘q’;\u003Cbr \u002F>\n} );\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Popup search shortcode\u003C\u002Fh3>\n\u003Cp>Opens a modal search box and redirects to your results page on submit:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>[askiva_search_popup results_url=”\u002Fsearch\u002F” trigger_text=”Search”]\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Cp>  Attribute\u003Cbr \u002F>\n  Default\u003Cbr \u002F>\n  Description\u003C\u002Fp>\n\u003Cp>  \u003Ccode>trigger_text\u003C\u002Fcode>\u003Cbr \u002F>\n  Search\u003Cbr \u002F>\n  Button that opens the popup\u003C\u002Fp>\n\u003Cp>  \u003Ccode>placeholder\u003C\u002Fcode>\u003Cbr \u002F>\n  Search…\u003Cbr \u002F>\n  Input placeholder\u003C\u002Fp>\n\u003Cp>  \u003Ccode>close_text\u003C\u002Fcode>\u003Cbr \u002F>\n  Close\u003Cbr \u002F>\n  Close button label\u003C\u002Fp>\n\u003Cp>  \u003Ccode>results_url\u003C\u002Fcode>\u003Cbr \u002F>\n  \u003Cem>(auto)\u003C\u002Fem>\u003Cbr \u002F>\n  Where to send the user after search\u003C\u002Fp>\n\u003Cp>  \u003Ccode>results_page_id\u003C\u002Fcode>\u003Cbr \u002F>\n  –\u003Cbr \u002F>\n  Page ID alternative to \u003Ccode>results_url\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>  \u003Ccode>min_chars\u003C\u002Fcode>\u003Cbr \u002F>\n  2\u003Cbr \u002F>\n  Minimum query length\u003C\u002Fp>\n\u003Ch3>Frontend search behavior\u003C\u002Fh3>\n\u003Cp>When a visitor searches:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>AI answer\u003C\u002Fstrong>: streamed via Server-Sent Events (\u003Ccode>\u002Fsearch\u002Fstream\u003C\u002Fcode>), rendered as GFM Markdown (bold, italics, bullet\u002Fnumbered lists) with DOMPurify sanitization\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Search results\u003C\u002Fstrong>: fetched via AJAX proxy (\u003Ccode>\u002Fsearch\u002F\u003C\u002Fcode>), with thumbnails and excerpts\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Did you mean\u003C\u002Fstrong>: shown when the API returns a \u003Ccode>did_you_mean\u003C\u002Fcode> suggestion\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Source links\u003C\u002Fstrong>: \u003Ccode>[Source N]\u003C\u002Fcode> markers in the AI answer link to matching result URLs\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Bundled assets (no external CDN): \u003Ccode>marked.min.js\u003C\u002Fcode> (v15.0.12), \u003Ccode>purify.min.js\u003C\u002Fcode>, \u003Ccode>search.js\u003C\u002Fcode>, \u003Ccode>search.css\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3>Theme template overrides\u003C\u002Fh3>\n\u003Cp>Copy templates into your theme to customize markup:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>`\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>wp-content\u002Fthemes\u002Fyour-theme\u002Fcentous-ai-search-with-askiva\u002F\u003Cbr \u002F>\n  search.php\u003Cbr \u002F>\n  search-results.php\u003Cbr \u002F>\n  search-result-item.php\u003Cbr \u002F>\n  search-popup.php\u003Cbr \u002F>\n    `\u003C\u002Fp>\n\u003Ch3>Dashboard\u003C\u002Fh3>\n\u003Cp>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Dashboard shows (when connected):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Connected site \u002F domain\u003C\u002Fli>\n\u003Cli>Indexed pages\u003C\u002Fli>\n\u003Cli>Searches this month\u003C\u002Fli>\n\u003Cli>AI answers generated\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Statistics are fetched from \u003Ccode>GET \u002Fwp\u002Fstats\u003C\u002Fcode> and cached for performance.\u003C\u002Fp>\n\u003Ch3>Sync\u003C\u002Fh3>\n\u003Cp>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Sync:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Optionally enable \u003Cstrong>Delete all data and start fresh sync\u003C\u002Fstrong> for a full re-index\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Start Sync\u003C\u002Fstrong> to index published content in batches\u003C\u002Fli>\n\u003Cli>Monitor progress and logs in the sync panel\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Sync uses \u003Ccode>POST \u002Fwp\u002Fdocuments\u002F\u003C\u002Fcode> in batches sized by \u003Cstrong>Content Items per Index Cycle\u003C\u002Fstrong>. Long-running sync requests extend PHP time limits automatically.\u003C\u002Fp>\n\u003Cp>Note: Closing the browser may pause progress; resume from the Sync page.\u003C\u002Fp>\n\u003Ch3>WordPress REST API (plugin)\u003C\u002Fh3>\n\u003Cp>Registered under \u003Ccode>askiva\u002Fv1\u003C\u002Fcode> for remote\u002Fautomated sync control:\u003C\u002Fp>\n\u003Cp>  Route\u003Cbr \u002F>\n  Method\u003Cbr \u002F>\n  Description\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fremote-sync\u003C\u002Fcode>\u003Cbr \u002F>\n  POST\u003Cbr \u002F>\n  Start or resume sync (returns immediately; use \u003Ccode>\u002Fsync\u002Ftick\u003C\u002Fcode> to advance)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fsync\u002Fstatus\u003C\u002Fcode>\u003Cbr \u002F>\n  GET\u003Cbr \u002F>\n  Current sync status\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fsync\u002Fstart\u003C\u002Fcode>\u003Cbr \u002F>\n  POST\u003Cbr \u002F>\n  Start sync (\u003Ccode>fresh_start\u003C\u002Fcode> optional)\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fsync\u002Fpause\u003C\u002Fcode>\u003Cbr \u002F>\n  POST\u003Cbr \u002F>\n  Pause sync\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fsync\u002Fresume\u003C\u002Fcode>\u003Cbr \u002F>\n  POST\u003Cbr \u002F>\n  Resume sync\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fsync\u002Frestart\u003C\u002Fcode>\u003Cbr \u002F>\n  POST\u003Cbr \u002F>\n  Restart sync\u003C\u002Fp>\n\u003Cp>  \u003Ccode>\u002Fwp-json\u002Faskiva\u002Fv1\u002Fsync\u002Ftick\u003C\u002Fcode>\u003Cbr \u002F>\n  POST\u003Cbr \u002F>\n  Process one sync tick\u003C\u002Fp>\n\u003Cp>Authenticate with the same credentials saved in \u003Cstrong>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Settings\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Site identifier\u003C\u002Fstrong>: send as \u003Ccode>site_id\u003C\u002Fcode>, \u003Ccode>site_identifier\u003C\u002Fcode>, or \u003Ccode>api_site_id\u003C\u002Fcode> (JSON body or query), or header \u003Ccode>X-Askiva-Site-Id\u003C\u002Fcode> \u002F \u003Ccode>X-Askiva-Site-Identifier\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Site key\u003C\u002Fstrong>: send as \u003Ccode>site_key\u003C\u002Fcode> or \u003Ccode>api_key\u003C\u002Fcode> (JSON body or query), or header \u003Ccode>X-Askiva-Key\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Both the string site identifier (e.g. \u003Ccode>sdgicity-kH33Isf1\u003C\u002Fcode>) and numeric \u003Ccode>api_site_id\u003C\u002Fcode> from verify are accepted when they match saved settings.\u003C\u002Fp>\n\u003Ch3>Askiva backend API\u003C\u002Fh3>\n\u003Cp>All paths are relative to your configured API base (e.g. \u003Ccode>https:\u002F\u002Fapi.example.com\u002Fapi\u002Fv1\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>Connection and status\u003C\u002Fp>\n\u003Cp>  Method\u003Cbr \u002F>\n  Endpoint\u003Cbr \u002F>\n  Description\u003C\u002Fp>\n\u003Cp>  POST\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fverify\u003C\u002Fcode>\u003Cbr \u002F>\n  Validate Site ID + Site Key\u003C\u002Fp>\n\u003Cp>  POST\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fconnect\u003C\u002Fcode>\u003Cbr \u002F>\n  Legacy connect\u003C\u002Fp>\n\u003Cp>  GET\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fstatus\u003C\u002Fcode>\u003Cbr \u002F>\n  Connection test (\u003Ccode>X-Askiva-Key\u003C\u002Fcode> header)\u003C\u002Fp>\n\u003Cp>  GET\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fstats\u003C\u002Fcode>\u003Cbr \u002F>\n  Site statistics\u003C\u002Fp>\n\u003Cp>Documents and indexing\u003C\u002Fp>\n\u003Cp>  Method\u003Cbr \u002F>\n  Endpoint\u003Cbr \u002F>\n  Description\u003C\u002Fp>\n\u003Cp>  POST\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fdocuments\u002F\u003C\u002Fcode>\u003Cbr \u002F>\n  Index a batch of documents\u003C\u002Fp>\n\u003Cp>  GET\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fdocuments\u002Fbatch\u002F{id}\u003C\u002Fcode>\u003Cbr \u002F>\n  Batch status\u003C\u002Fp>\n\u003Cp>  DELETE\u003Cbr \u002F>\n  \u003Ccode>\u002Fwp\u002Fdocuments\u002Fall\u003C\u002Fcode>\u003Cbr \u002F>\n  Delete all indexed documents (\u003Ccode>site_id\u003C\u002Fcode> + \u003Ccode>api_key\u003C\u002Fcode> in JSON body, \u003Ccode>X-Askiva-Key\u003C\u002Fcode> header)\u003C\u002Fp>\n\u003Cp>Search (frontend)\u003C\u002Fp>\n\u003Cp>  Method\u003Cbr \u002F>\n  Endpoint\u003Cbr \u002F>\n  Description\u003C\u002Fp>\n\u003Cp>  POST\u003Cbr \u002F>\n  \u003Ccode>\u002Fsearch\u002F\u003C\u002Fcode>\u003Cbr \u002F>\n  Search results + AI answer metadata\u003C\u002Fp>\n\u003Cp>  POST\u003Cbr \u002F>\n  \u003Ccode>\u002Fsearch\u002Fstream\u003C\u002Fcode>\u003Cbr \u002F>\n  Streamed AI answer (SSE)\u003C\u002Fp>\n\u003Cp>Search requests send \u003Ccode>site_id\u003C\u002Fcode>, \u003Ccode>api_key\u003C\u002Fcode>, \u003Ccode>query\u003C\u002Fcode>, \u003Ccode>limit\u003C\u002Fcode>, and \u003Ccode>page\u003C\u002Fcode> in the JSON body, plus \u003Ccode>X-Askiva-Key\u003C\u002Fcode> header.\u003C\u002Fp>\n\u003Ch3>Developer filters\u003C\u002Fh3>\n\u003Cpre>\u003Ccode>`php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u002F\u002F API base URL\u003Cbr \u002F>\nadd_filter( ‘askiva_api_base’, $callback );\u003C\u002Fp>\n\u003Cp>\u002F\u002F Default search results page URL\u003Cbr \u002F>\nadd_filter( ‘askiva_search_results_url’, $callback );\u003C\u002Fp>\n\u003Cp>\u002F\u002F URL query parameter name (default: q)\u003Cbr \u002F>\nadd_filter( ‘askiva_search_query_param’, $callback );\u003C\u002Fp>\n\u003Cp>\u002F\u002F Include API trace\u002Fdebug in search payload (default: true)\u003Cbr \u002F>\nadd_filter( ‘askiva_search_include_trace’, $callback );\u003C\u002Fp>\n\u003Cp>\u002F\u002F Template variables passed to PHP templates\u003Cbr \u002F>\nadd_filter( ‘askiva_template_vars’, $callback, 10, 2 );\u003Cbr \u002F>\n    \u003Ccode>\u003Ch3>Requirements\u003C\u002Fh3>\u003Cbr \u002F>\n* WordPress 5.8+\u003Cbr \u002F>\n* PHP 7.4+\u003Cbr \u002F>\n* Valid Askiva account (Site Identifier and API Key from the [Askiva dashboard](https:\u002F\u002Faskiva-ai-frontend.vercel.app\u002F))\u003Cbr \u002F>\n* Outbound HTTPS to the Askiva API host\u003Cbr \u002F>\n* Published content to index (drafts are skipped)\u003Ch3>Features\u003C\u002Fh3>\u003Cbr \u002F>\n* Secure admin AJAX with nonces and\u003C\u002Fcode>manage_options\u003Ccode>checks\u003Cbr \u002F>\n* Site ID + Site Key connection with verify endpoint\u003Cbr \u002F>\n* Batch content sync with pause\u002Fresume\u002Frestart\u003Cbr \u002F>\n* Real-time sync status and error logging\u003Cbr \u002F>\n* Streaming AI answers with GFM Markdown rendering\u003Cbr \u002F>\n* “Did you mean” typo suggestions from API\u003Cbr \u002F>\n* List and grid result layouts with configurable thumbnails\u003Cbr \u002F>\n* Search popup shortcode for header\u002Fnavigation use\u003Cbr \u002F>\n* Server-rendered and AJAX search modes\u003Cbr \u002F>\n* Theme template overrides\u003Cbr \u002F>\n* WordPress REST sync endpoints for automation\u003Cbr \u002F>\n* Cached dashboard statistics\u003Cbr \u002F>\n* First-run redirect to settings\u003Cbr \u002F>\n* Clean uninstall support\u003Ch3>Troubleshooting\u003C\u002Fh3>\u003Ch3>Connection issues\u003C\u002Fh3>\u003Cbr \u002F>\n1. Confirm **Site ID** and **Site Key** match the **Site Identifier** and **API Key** on your Askiva site detail page\u003Cbr \u002F>\n2. If you use a custom API host, verify\u003C\u002Fcode>ASKIVA_API_BASE\u003Ccode>(or the\u003C\u002Fcode>askiva_api_base\u003Ccode>filter) includes\u003C\u002Fcode>\u002Fapi\u002Fv1\u003Ccode>and points to the correct server\u003Cbr \u002F>\n3. Use **Test Connection** on the Settings page\u003Cbr \u002F>\n4. Check **Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Logs** for API error details\u003Ch3>Search issues\u003C\u002Fh3>\u003Cbr \u002F>\n1. Ensure the site is connected and content has been synced\u003Cbr \u002F>\n2. Confirm the shortcode page loads\u003C\u002Fcode>search.js\u003Ccode>(no JavaScript console errors)\u003Cbr \u002F>\n3. In browser DevTools \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Network, inspect\u003C\u002Fcode>askiva_public_search\u003Ccode>and\u003C\u002Fcode>askiva_public_search_stream\u003Ccode>AJAX calls\u003Cbr \u002F>\n4. Enable shortcode\u003C\u002Fcode>debug=”1″` for API trace data when diagnosing “Did you mean”\u003C\u002Fp>\n\u003Ch3>Sync issues\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Review sync logs and error tab on \u003Cstrong>Centous Search \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> Sync\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>Only \u003Cstrong>published\u003C\u002Fstrong> content is indexed\u003C\u002Fli>\n\u003Cli>Try a fresh sync if indexed data looks stale or corrupted\u003C\u002Fli>\n\u003Cli>Increase \u003Cstrong>Content Items per Index Cycle\u003C\u002Fstrong> cautiously on slow hosts\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>Plugin support: \u003Ca href=\"https:\u002F\u002Fcentousplugins.com\u002F\" rel=\"nofollow ugc\">Centous\u003C\u002Fa>, developer of this plugin.\u003C\u002Fp>\n\u003Cp>Askiva (third-party service): account setup at \u003Ca href=\"https:\u002F\u002Faskivasearch.com\u002F\" rel=\"nofollow ugc\">Askiva\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Faskiva-ai-frontend.vercel.app\u002F\" rel=\"nofollow ugc\">Askiva dashboard\u003C\u002Fa>. Not affiliated with Centous.\u003C\u002Fp>\n","Centous AI Search with Askiva connects WordPress to Askiva for semantic search, content sync, and streamed AI answers.",0,36,"2026-07-20T15:12:00.000Z","7.0.2","5.8","7.4",[],"https:\u002F\u002Fcentousplugins.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcentous-ai-search-with-askiva.1.0.0.zip",100,null,"2026-07-22T17:31:50.256Z","no_bundle",[],{"slug":26,"display_name":7,"profile_url":8,"plugin_count":27,"total_installs":28,"avg_security_score":20,"avg_patch_time_days":29,"trust_score":30,"computed_at":31},"centous",7,80,30,94,"2026-08-29T11:08:31.587Z",[],{"error":34,"url":35,"statusCode":36,"statusMessage":37,"message":37},true,"http:\u002F\u002Flocalhost\u002Fapi\u002Fplugins\u002Fcentous-ai-search-with-askiva\u002Fbundle",404,"no bundle for this plugin yet",{"slug":4,"current_version":6,"total_versions":39,"versions":40},1,[41],{"version":6,"download_url":19,"svn_tag_url":42,"released_at":21,"has_diff":43,"diff_files_changed":44,"diff_lines":21,"trac_diff_url":21,"vulnerabilities":45,"is_current":34},"https:\u002F\u002Fplugins.svn.wordpress.org\u002Fcentous-ai-search-with-askiva\u002Ftags\u002F1.0.0\u002F",false,[],[]]