Description
WLN Multi-Provider AI Chat adds a floating chat widget to a WordPress site. Site administrators choose an AI endpoint and model, supply credentials, and configure the widget. Replies are generated by the configured service.
Features include:
- OpenAI, Anthropic Claude, Google Gemini, YandexGPT, OpenRouter, local Ollama, and custom OpenAI-compatible endpoints.
- A local database knowledge index for published, publicly viewable posts and pages without passwords, and administrator-supplied Markdown documents.
- Optional page context and configurable conversation history sent with a question.
- Widget colors, dimensions, position, fonts, and welcome messages.
- Signed visitor sessions, abuse-prevention rate limits, encrypted API-key storage, and administrator permission checks.
- Local conversation statistics, configurable retention, and visitor-controlled history deletion.
- Translation-ready interface and integration with Polylang for saved widget strings. Translations are distributed through translate.wordpress.org.
All included plugin features are available without a plugin license or subscription. External AI providers may require accounts and charge for their processing. Request limits protect the site from abuse; they do not unlock paid plugin features.
This is an independent plugin and is not affiliated with the listed AI providers.
External services
No provider request is made merely by activating the plugin or opening the widget. After the administrator configures the service, requests are made when a visitor sends a message or an administrator clicks Test Connection. The connection test sends a fixed test message through the same prompt-building process, so configured system instructions and any relevant knowledge excerpts may also be included.
Requests contain the API credential, selected model and generation parameters, system instructions, the current message and a limited conversation history. Relevant knowledge excerpts may be included. If page context is enabled, the current page URL, title, content excerpt and selected text may also be included. Yandex requests additionally include the configured project/folder identifier. The provider sees the server’s network address and HTTP request metadata. Visitor IP addresses and browser user agents are not deliberately included in AI prompt payloads.
Only the configured endpoint receives these requests. Asynchronous Yandex generation may require follow-up status requests. There is no developer telemetry, advertising tracker or license-verification service. Provider documentation links are ordinary links and open only when clicked.
OpenAI
Used to generate chat replies at https://api.openai.com/v1. Receives the request data described above when selected and a chat or test request is submitted.
Terms: https://openai.com/policies/services-agreement/
Privacy: https://openai.com/policies/privacy-policy/
Anthropic
Used to generate Claude replies at https://api.anthropic.com/v1. Receives the request data described above when selected and a chat or test request is submitted.
Terms: https://www.anthropic.com/legal/commercial-terms
Privacy: https://www.anthropic.com/legal/privacy
Google Gemini
Used to generate replies at https://generativelanguage.googleapis.com/v1beta. Receives the request data described above when selected and a chat or test request is submitted.
Terms: https://ai.google.dev/gemini-api/terms
Privacy: https://policies.google.com/privacy
Yandex Cloud
Used to generate YandexGPT replies at https://ai.api.cloud.yandex.net/v1 or another administrator-configured Yandex Foundation Models endpoint. Receives the request data described above, including the project/folder identifier, on chat and test requests; operation identifiers are sent when polling asynchronous results.
Terms: https://yandex.com/legal/cloud_termsofuse/en/
Privacy: https://yandex.com/legal/confidential/en/
OpenRouter
Used to route generation requests through https://openrouter.ai/api/v1 to the selected model provider. Receives the request data described above on chat and test requests and forwards content to the upstream provider. Review that model provider’s policies as well.
Terms: https://openrouter.ai/terms
Privacy: https://openrouter.ai/privacy
Ollama and custom endpoints
The Ollama preset uses http://localhost:11434/v1 on the WordPress server. The same request data is sent to that local service on chat and test requests. The plugin does not contact ollama.com automatically. Whether an Ollama model or a custom gateway forwards data elsewhere depends on how the administrator configures that service.
Ollama service terms: https://ollama.com/terms
Ollama privacy: https://ollama.com/privacy
Local Ollama software license: https://github.com/ollama/ollama/blob/main/LICENSE
For a custom endpoint, the destination and applicable terms/privacy policy are determined by the administrator. Review those documents before configuration and disclose that service in the site’s privacy notice. The plugin cannot identify the operator or terms of an arbitrary URL.
Poolside (optional custom endpoint)
When an administrator configures https://inference.poolside.ai/v1 and a supported model, Poolside generates replies using the same request data and triggers described above. The plugin allows a longer request timeout for Poolside endpoints. No Poolside request is made unless that endpoint is explicitly configured.
Terms: https://poolside.ai/legal/eula
Privacy: https://poolside.ai/legal/privacy
License
GPL version 2 or later. See LICENSE.
Screenshots






Installation
- Upload the plugin ZIP through Plugins > Add New > Upload Plugin and activate it.
- Open AI Chat > API Settings. Review the external-service disclosures below, then choose an endpoint and model and enter the provider’s API key. For a local Ollama endpoint that ignores authentication, enter a non-empty placeholder such as
ollama. - Click Test Connection, then save the settings.
- Configure Widget Settings and optionally add Markdown documents under Knowledge Base.
- Update the site’s privacy notice to describe chat storage and the chosen provider. The floating widget appears on the frontend.
PHP OpenSSL with AES-256-GCM support is required to store provider credentials. Markdown knowledge documents are available as reference material for public visitor questions: upload only information intended for that audience. Sites with membership or other third-party content restrictions should review which published content is appropriate for the knowledge index.
Knowledge documents are saved as plain Markdown text. HTML tags are removed and invalid UTF-8 is rejected; line breaks, headings, lists and other plain Markdown formatting are retained.
Developers can exclude additional posts with the wln_multi_provider_ai_chat_public_knowledge_post filter (return false for restricted posts); it is applied at indexing and retrieval. Provider requests do not follow HTTP redirects: configure the final API endpoint URL. Administrator connection tests display provider errors; the local wln_multi_provider_ai_chat_error action provides fixed diagnostic event names without logging credentials, prompts or provider response bodies.
The floating widget is configured through Widget Settings. Existing [gsxr_777_chat] shortcodes and the new [wln_multi_provider_ai_chat] alias remain recognized; the frontend displays one global floating widget.
FAQ
-
Where is chat data stored?
-
Conversation messages and local statistics are stored in this site’s WordPress database. A signed conversation credential is stored in the visitor’s browser local storage so the conversation can resume after page reloads. Visitors can clear their history. Retention and optional request metadata are configurable in API Settings.
-
Will an update reset my settings?
-
No. Existing option names, database tables, encryption derivation, browser session storage and the legacy shortcode are retained for compatibility. Defaults are added only for missing options. A fallback imports options from partially renamed builds only when the original option does not exist. Deactivation does not delete settings.
The first change from the old plugin directory/main filename to the new slug requires manual activation of the new plugin. Back up the site, deactivate the old plugin, install and activate this package, then check the existing configuration. Do not activate both copies together. Do not use WordPress’s Delete action on the old copy if its data-removal option is enabled, because both copies share stored data. A slug change does not automatically become a normal WordPress update.
-
Does this use the WordPress AI Client?
-
This release retains direct provider integrations to preserve existing credentials, model parameters, custom endpoints and support for WordPress versions before 7.0. It does not automatically migrate provider settings into the core AI Client.
-
Are there private REST endpoints?
-
The session endpoint issues a new random signed credential without storing data or contacting an AI provider. Configuration and translated-label endpoints intentionally expose only frontend widget settings. Chat and history endpoints require the conversation’s signed credential. Administrative operations require manage_options and form/AJAX nonces when changing data.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“WLN Multi-Provider AI Chat” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “WLN Multi-Provider AI Chat” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.4.8
- Fixed the Widget Settings tabs to display General and Appearance in English while preserving their Russian translations.
1.4.7
- Bundled the Russian translation, including the conversation history clearing message.
- Registered bundled language files while retaining priority for WordPress.org language packs.
1.4.6
- Removed DATETIME expression defaults for compatibility with older MySQL versions and strict SQL modes.
- Verified required database schema changes before recording a completed upgrade; failed upgrades remain retryable.
- Declared integer display widths explicitly so schema verification also completes on MariaDB.
- Prevented LiteSpeed REST caching of chat endpoints so session checks and conversation history remain current.
- Used portable session index prefixes and handled unavailable optional FULLTEXT indexes without activation output.
- Checked OpenSSL requirements and handled storage initialization failures during activation.
1.4.5
- Kept the Tested up to declaration only in this readme.
- Applied separate widget width (300-800px) and height (400-900px) setting sanitizers.
- Sanitized POST values at input, preserving multiline welcome messages and system instructions.
- Sanitized Markdown text in both editor save handlers, file uploads and the shared storage method.
1.4.4
- Escaped quotes when formatting message links to prevent HTML attribute injection.
- Excluded password-protected posts and rechecked post visibility when retrieving existing knowledge chunks.
- Validated REST chat parameter types and message length before processing requests.
- Disabled API redirects to avoid forwarding credentials and limited response sizes.
- Replaced raw error logging with local diagnostic events that contain only fixed event identifiers.
- Cleared scheduled tasks and partial-rename fallback options during the relevant uninstall paths.
1.4.3
- Prevented theme section containment from clipping the floating button on hover.
- Isolated the send button dimensions and outline icons from global theme submit-button and SVG styles.
- Localized previously saved English default widget labels at display time while preserving custom text and stored settings.
1.4.2
- Prevented double encryption when WordPress sanitizes an already encrypted API key.
- Added read compatibility for previously double-encrypted keys without rewriting saved settings.
- Improved errors from providers that return a string error and retained HTTP status when no message is available.
1.4.1
- Renamed the plugin, PHP and JavaScript classes, files, frontend CSS classes and translation domain to WLN Multi-Provider AI Chat.
- Preserved existing settings, API-key encryption, database tables, saved sessions and legacy shortcodes and REST routes.
- Fixed inconsistent storage identifiers left by a partial rename.
- Documented external services and public REST routes; removed unnecessary public WordPress nonces.
- Removed bundled translations and manual text-domain loading in favor of WordPress.org language packs.
1.4.0
- Added signed sessions, authenticated API-key encryption, local knowledge indexing, retention cleanup and widget improvements.
