diff --git a/docs/.vuepress/config-client/documents.ts b/docs/.vuepress/config-client/documents.ts
index 4cbb3c7e..de4400fe 100644
--- a/docs/.vuepress/config-client/documents.ts
+++ b/docs/.vuepress/config-client/documents.ts
@@ -111,7 +111,7 @@ export default [
},
{
title: "WordPress Plugin",
- description: "Documentation for Imunify Security plugin for WordPress available in Imunify360.",
+ description: "Imunify Security plugin for WordPress: a guide for WordPress site owners, and a guide for hosting providers.",
link: "/wordpress_plugin/",
}
]
diff --git a/docs/.vuepress/config-client/sidebar.ts b/docs/.vuepress/config-client/sidebar.ts
index d2c83e43..42e9fa8a 100644
--- a/docs/.vuepress/config-client/sidebar.ts
+++ b/docs/.vuepress/config-client/sidebar.ts
@@ -190,7 +190,8 @@ export default {
{
collapsable: false,
children: [
- "/wordpress_plugin/"
+ ["/wordpress_plugin/", "Site Owner Guide"],
+ ["/wordpress_plugin/hosting_providers/", "Hosting Provider Guide"]
]
}
],
diff --git a/docs/.vuepress/theme/util.js b/docs/.vuepress/theme/util.js
index 78efcad3..834c6d43 100644
--- a/docs/.vuepress/theme/util.js
+++ b/docs/.vuepress/theme/util.js
@@ -259,9 +259,12 @@ function ensureEndingSlash(path) {
function resolveItem(item, pages, base, isNested) {
if (typeof item === 'string') return resolvePage(pages, item, base)
- else if (Array.isArray(item)) return Object.assign(resolvePage(pages, item[0], base), {
- title: item[1]
- })
+ else if (Array.isArray(item)) {
+ // Pages are loaded asynchronously, so a page may not be resolvable yet.
+ // Return null in that case, like the string branch above does.
+ const page = resolvePage(pages, item[0], base)
+ return page ? Object.assign(page, {title: item[1]}) : null
+ }
else {
if (isNested) console.error(
'[vuepress] Nested sidebar groups are not supported. ' +
diff --git a/docs/command_line_interface/README.md b/docs/command_line_interface/README.md
index a677f46b..7fdaa38a 100644
--- a/docs/command_line_interface/README.md
+++ b/docs/command_line_interface/README.md
@@ -2780,6 +2780,8 @@ imunify360-agent whitelisted-crawlers [command]
This command manages the Imunify Security WordPress plugin and its Web Application Firewall (WAF). It is available in both Imunify360 (using `imunify360-agent`) and ImunifyAV/AV+ (using `imunify-antivirus`).
+For requirements, installation, and what site owners can change, see the [Hosting Provider Guide](/wordpress_plugin/hosting_providers/).
+
**Usage:**
@@ -2846,6 +2848,50 @@ imunify360-agent config update '{"WORDPRESS":{"waf_default": true}}'
+### Check the WAF status of accounts
+
+Use
+
+```
+imunify360-agent wordpress-plugin waf status --status disabled --json
+```
+
+
+
+3. Report the status of one account:
+
+
```
-imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection": true}}'
-imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection": false}}'
+imunify360-agent wordpress-plugin list-sites
```
-Enable it for a single hosting account:
+2. List the sites of one hosting account:
```
-imunify360-agent config update --user user1 '{"WORDPRESS":{"ai_bot_protection": true}}'
+imunify360-agent wordpress-plugin list-sites --user alice
```
+3. Page through a longer list:
+
+
+
+```
+imunify360-agent wordpress-plugin list-sites --limit 100 --offset 100
+```
+
+
+
+### List WAF incidents
+
+Use
+
+```
+imunify360-agent wordpress-plugin list-incidents --by-domain example.com --order-by severity-
+```
+
+
+
+3. List the incidents caused by one IP address:
+
+
+
+```
+imunify360-agent wordpress-plugin list-incidents --by-abuser-ip 203.0.113.10
+```
+
+
+
+### AI Bot Management
+
+
+
+```
+imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection": true}}'
+imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection": false}}'
+```
+
+
+
+This is a server-wide setting. Unlike
diff --git a/docs/config_file_description/README.md b/docs/config_file_description/README.md
index d2abbde9..ac3045e4 100644
--- a/docs/config_file_description/README.md
+++ b/docs/config_file_description/README.md
@@ -449,13 +449,13 @@ systemctl restart imunify360
# enable (True) the Malware Database Scanner - a database antivirus with automated malware detection and clean-up of web applications. Requires MariaDB/MySQL DB management system version 5.5. Recommended version is 5.6+. Note, that only WordPress, Joomla, and Magento databases are supported now. |
| WORDPRESS: |
| security_plugin_enabled: False |
-# installs the Imunify Security WordPress plugin on all WordPress sites. This is the master switch for the WordPress plugin, its WordPress WAF, and AI Bot Management. Default is False. |
+
# installs the Imunify Security WordPress plugin on all WordPress sites. This is the master switch for the WordPress plugin, its WordPress WAF, and AI Bot Management. Default is False. See the Hosting Provider Guide. |
| waf_enabled: True |
# enables the WordPress WAF (virtual patching) for WordPress sites on the server. When set to False, WAF rules are removed from all sites. Can also be set per hosting account. Default is True. |
| waf_default: False |
# whether the WordPress WAF is enabled automatically for newly created hosting accounts. Default is False. |
| ai_bot_protection: False |
-# enables AI Bot Management (bot classification and per-category rate limiting) for WordPress sites on the server. Can also be set per hosting account; a site owner may override it from the WordPress dashboard. Default is False. |
+
# enables AI Bot Management (bot classification and per-category rate limiting) for WordPress sites on the server. This is a server-wide setting only; a site owner may override it for their own site from the WordPress dashboard. Default is False. |
| ai_bot_protection_preset: balanced |
# the default AI Bot Management preset applied to sites that have not chosen their own. One of balanced, strict, or monitor. Default is balanced. |
diff --git a/docs/dashboard/README.md b/docs/dashboard/README.md
index 76302a15..9ee52165 100644
--- a/docs/dashboard/README.md
+++ b/docs/dashboard/README.md
@@ -1574,11 +1574,7 @@ Click
_Save changes_ button on the bottom of th
#### WordPress plugin
-:::warning
-The WordPress plugin installation is currently allowed only if _Settings > Malware > General > Default action on detect_ is set to _Cleanup_. Other installation options will be introduced in the future release.
-:::
-
-Tick the
_Install WordPress plugin_ checkbox to install the Imunify Security WP plugin on all WordPress sites.
+Tick the
_Install WordPress plugin_ checkbox to install the Imunify Security WP plugin on all WordPress sites. For requirements, rollout, and these settings in one place, see the
[Hosting Provider Guide](/wordpress_plugin/hosting_providers/).
You can also enable it via CLI with the following command:
diff --git a/docs/wordpress_plugin/README.md b/docs/wordpress_plugin/README.md
index e865621f..34f9930a 100644
--- a/docs/wordpress_plugin/README.md
+++ b/docs/wordpress_plugin/README.md
@@ -1,31 +1,36 @@
-# Imunify Security Plugin for WordPress
+---
+title: 'Imunify Security Plugin for WordPress: Site Owner Guide'
+description: What the Imunify Security plugin for WordPress does, why your hosting provider installed it, how to use its malware, firewall, and bot protection features, and answers to common questions from WordPress administrators.
+---
+
+# Site Owner Guide
[[toc]]
-## Overview
+::: tip Are you a hosting provider or server administrator?
+This page is written for **WordPress site owners**. It explains what the plugin does, what you see in your WordPress dashboard, and what you can change yourself.
+
+If you run the server, see the
[Hosting Provider Guide](/wordpress_plugin/hosting_providers/) for requirements, installation, and server-wide settings.
+:::
-The **Imunify Security plugin for WordPress** is available to all Imunify customers (ImunifyAV, ImunifyAV+, and Imunify360). It provides WordPress administrators with a modern interface, real-time malware and security status, and a seamless upgrade path from AV to 360. The plugin is designed to enhance your website's security and user experience directly from the WordPress dashboard.
+## What the plugin does
-## Prerequisites
+The **Imunify Security plugin for WordPress** shows the security status of your website directly in the WordPress dashboard. It reports what the Imunify security software on your hosting server found and cleaned, and it adds two protection layers that run inside WordPress itself.
-* **WordPress Version**: 5.0.0 or higher
-* **PHP Version**: 5.6 or higher
-* **Imunify360**: 8.4.1 or higher
-* **ImunifyAV/AV+**: 8.6.0 or higher
+You do not need to buy, download, or configure anything. The plugin works together with the Imunify product your hosting provider already runs on the server (
ImunifyAV,
ImunifyAV+, or
Imunify360).
-## Installation
+### Why the plugin is on your site
-The plugin is not available in the WordPress plugin repository. To install:
+Your hosting provider installed the plugin for you, as part of the security service included with your hosting plan. This is why it appears in your plugin list without you installing it, and why you cannot find it in the WordPress.org plugin directory — it is delivered by the hosting server, not from the public repository.
-1. Navigate to Imunify settings in your hosting control panel (e.g., cPanel).
-2. Open the `General` tab.
-3. Scroll to the `WordPress Plugin` section.
-4. Tick the `Install WordPress plugin` checkbox and click `Save changes`.
-5. The plugin will be installed in the background to all active WordPress installations on the server.
+### What it protects you from
-
+* **Malware.** Infected files, injected code, and backdoors. The Imunify scanner on the server checks your files, and the plugin shows you what was detected and cleaned.
+* **Zero-day attacks and dangerous code execution.** Attacks that use undisclosed vulnerabilities, and backdoors that are already on the site, run PHP code that no scanner has a signature for yet.
Proactive Defense stops that code at the moment it tries to run.
+* **Exploits of known vulnerabilities** in the plugins, themes, and WordPress core you use — including the time between a vulnerability becoming public and you installing the update. The Web Application Firewall (virtual patching) blocks the attempt without changing any of your files. See
[Web Application Firewall](#web-application-firewall-virtual-patching).
+* **Aggressive crawlers, scrapers, and AI bots** that slow your site down, use up its resources, and copy its content.
AI Bot Management limits them while leaving real visitors untouched. See
[AI Bot Management](#ai-bot-management).
-*Plugin installation settings in the control panel*
+Which of these are available depends on the Imunify product your hosting provider runs.
ImunifyAV and
ImunifyAV+ users see a smaller set of features than
Imunify360 users.
## Features
@@ -35,8 +40,8 @@ The plugin adds a dashboard widget that helps administrators keep track of their
- Real-time security status
- Proactive Defense status
-- Web Application Firewall status and recent WAF incidents (see
[Web Application Firewall](/wordpress_plugin/#web-application-firewall-virtual-patching))
-- Bot Protection status and recent bot activity (see
[AI Bot Management](/wordpress_plugin/#ai-bot-management))
+- Web Application Firewall status and recent WAF incidents (see
[Web Application Firewall](#web-application-firewall-virtual-patching))
+- Bot Protection status and recent bot activity (see
[AI Bot Management](#ai-bot-management))
- Timestamps for last and next scheduled scans
- Detailed list of detected and cleaned malware (file path, signature, detection or clean-up time)
@@ -85,9 +90,9 @@ ImunifyAV users are shown a limited interface and prompted to upgrade to Imunify
The
Imunify Security plugin includes a **Web Application Firewall (WAF)** that provides *virtual patching* for WordPress. It protects your sites against known vulnerabilities (CVEs) in WordPress plugins, themes, and core — **without modifying any of your site's files**. When a plugin or theme you use has a known security flaw, the WAF blocks attempts to exploit it, giving you time to apply the real update.
::: tip Note
-The
Web Application Firewall (virtual patching) described below requires the
Imunify Security WordPress plugin (
`imunify-wp-security`)
`wp-3.0.1-2` or later, together with a supported Imunify agent —
ImunifyAV/AV+ (
`imunify-antivirus`)
`av-8.7.1-2` or later, or
Imunify360 (
`imunify360-firewall`)
`8.12.5-3` or later.
-
This WordPress WAF is a separate layer from the server-side
[WAF (ModSecurity)](/dashboard/#waf-settings) and from
[WordPress Account Brute-force Protection](/dashboard/#wordpress-account-brute-force-protection). It runs inside the WordPress plugin and focuses on blocking exploit attempts against vulnerable plugins and themes. In the Imunify control panel it is presented on the
_CMS WAF_ tab.
+
+The feature needs a recent version of the plugin and of the Imunify software on the server. Your hosting provider manages both — see
[Requirements](/wordpress_plugin/hosting_providers/#requirements).
:::
### How it works
@@ -136,64 +141,53 @@ Use
_Show more results_ to open the full incide
### Managing WAF incidents
-The
_CMS WAF_ tab in the Imunify control panel is where you review WAF activity and manage rules.
-
-::: tip Note
-The
_CMS WAF_ tab appears only when the WordPress WAF is enabled and the account has at least one WordPress site.
-:::
+Open the
Imunify Security page from the WordPress admin menu to review WAF activity and manage rules. Everything on this page applies to the site you are currently in.
#### Incidents
-The
_Incidents_ sub-tab lists every request the WAF acted on:
+The
_Incidents_ tab lists every request the WAF acted on:
| Column | Description |
|---|---|
|
_Date_ | When the incident occurred (newest first by default). |
-|
_Domain_ | The WordPress site that was targeted. |
|
_IP_ | Source IP address. Click it to filter the list by that IP. |
|
_Country_ | Country the IP resolves to. |
|
_Count_ | How many times the incident repeated. |
|
_Severity_ | Severity of the matched rule (0–3 low, 4–6 medium, 7–10 high). |
|
_Rule_ | The rule that matched. When it references a CVE, it links to the CVE record. |
-You can filter incidents by date range and domain, or search by rule, description, or IP. Click a row to expand it and see the
_Sensor_,
_Rule_,
_Abuser_ (source IP), and
_Domain_ details.
+You can filter incidents by date range, or search by rule, description, or IP. Click a row to expand it and see the
_Sensor_,
_Rule_, and
_Abuser_ (source IP) details.

-*The Incidents sub-tab on the CMS WAF tab.*
+*The Incidents tab.*
#### Disabling a rule
-If a WAF rule interferes with legitimate traffic, you can disable it. On the
_Incidents_ sub-tab, click
_Disable rule_ for the incident and confirm in the dialog:
-
-* By default, the rule is disabled for **all** of your domains.
-* If you manage more than one WordPress site, you can instead pick specific domains from the
_Select domains_ list.
-
-Click
_Yes, disable_ to confirm. The change may take a few minutes to take effect across your sites.
+If a WAF rule interferes with legitimate traffic, you can disable it. On the
_Incidents_ tab, click
_Disable rule_ for the incident, then click
_Yes, disable_ to confirm. The rule is turned off for your site. The change may take a few minutes to take effect.

-*Disabling a WAF rule for all domains or for selected domains.*
+*Confirming that a WAF rule should be disabled.*
#### Disabled Rules
-The
_Disabled Rules_ sub-tab lists the rules you have turned off, showing the affected
_Component_,
_Version_,
_Rule_, and
_Domains_. To turn a rule back on, click
_Enable_ and confirm.
+The
_Disabled Rules_ tab lists the rules you have turned off, showing the affected
_Component_,
_Version_, and
_Rule_. To turn a rule back on, click
_Enable_ and confirm.

*Re-enabling a previously disabled rule.*
-### Enabling or disabling the WAF
+### Turning the WAF on or off
-The WordPress WAF requires the
Imunify Security plugin to be installed, and is controlled from
_Settings_ | _General_ | _WordPress plugin_ in the Imunify control panel:
-
-* **Server administrators** enable or disable the WAF server-wide, and can choose whether it is on by default for new hosting accounts. See
[WordPress plugin settings](/dashboard/#wordpress-plugin) and the
[command-line reference](/command_line_interface/#wordpress-plugin).
-* **Hosting-account owners** can turn the WAF off for their own account, unless the administrator has locked it server-wide (shown as *This value is set by server administrator*).
+Your hosting provider decides whether the WAF runs on the server, and can turn it on or off for individual hosting accounts. If you need it changed for your site, contact your provider. See
[Web Application Firewall](/wordpress_plugin/hosting_providers/#web-application-firewall) in the hosting provider guide.
## AI Bot Management
Imunify Security includes **AI Bot Management** — a layer that identifies automated traffic (search-engine crawlers, AI/LLM crawlers, scrapers, and malicious bots) *before WordPress finishes loading* and applies a per-minute request limit to each kind of bot, while leaving real visitors untouched. It protects sites from aggressive crawling and bot-driven resource abuse — increasingly from the wave of AI training and scraping crawlers — without slowing down legitimate users.
::: tip Note
-AI Bot Management requires the
Imunify Security WordPress plugin (
`imunify-wp-security`)
`wp-4.0.2-2` or later, together with a supported Imunify agent —
ImunifyAV/AV+ (
`imunify-antivirus`)
`av-8.8.3-6` or later, or
Imunify360 (
`imunify360-firewall`)
`8.13.6-6` or later. It is a separate layer from the server-side
[WAF (ModSecurity)](/dashboard/#waf-settings), from
[WordPress Account Brute-force Protection](/dashboard/#wordpress-account-brute-force-protection), and from the plugin's own
[Web Application Firewall](#web-application-firewall-virtual-patching). In the WordPress dashboard it appears as
_Bot Protection_.
+AI Bot Management is a separate layer from the server-side
[WAF (ModSecurity)](/dashboard/#waf-settings), from
[WordPress Account Brute-force Protection](/dashboard/#wordpress-account-brute-force-protection), and from the plugin's own
[Web Application Firewall](#web-application-firewall-virtual-patching). In the WordPress dashboard it appears as
_Bot Protection_.
+
+The feature needs a recent version of the plugin and of the Imunify software on the server. Your hosting provider manages both — see
[Requirements](/wordpress_plugin/hosting_providers/#requirements).
:::
### How it works
@@ -260,7 +254,7 @@ If your site cannot reach itself over HTTP, the pane shows a
_Bot Protection_ row does not appear. Providers control it from the command line — see the
[configuration file reference](/config_file_description/) (
`ai_bot_protection`,
`ai_bot_protection_preset`) and the
[command-line reference](/command_line_interface/#wordpress-plugin).
+1. **Hosting provider (server-wide).** The provider enables the feature and sets the default preset. When it is off at the server level, the
_Bot Protection_ row does not appear. See
[AI Bot Management](/wordpress_plugin/hosting_providers/#ai-bot-management) in the hosting provider guide.
2. **Site owner (WordPress admin).** Once the provider has enabled it, the WordPress administrator turns it on or off for their own site and chooses the preset from the
_Bot Protection_ widget.
3. **`wp-config.php` (advanced).** Definitions in
`wp-config.php` override the widget:
@@ -277,3 +271,114 @@ define( 'IMUNIFY_AI_BOT_PROTECTION_PRESET', 'strict' );
When AI Bot Management is disabled in
+
+```
+imunify360-agent config update '{"WORDPRESS":{"security_plugin_enabled": true}}'
+```
+
+
+
+On
+
+```
+imunify360-agent config update '{"WORDPRESS":{"waf_enabled": true}}'
+imunify360-agent config update '{"WORDPRESS":{"waf_default": true}}'
+```
+
+
+
+::: tip Note
+The WAF is enabled by default for hosting accounts that already existed when it was first rolled out. Newly created accounts follow the
+
+```
+imunify360-agent wordpress-plugin waf set --status enabled --all-users
+imunify360-agent wordpress-plugin waf set --status disabled --users user1 user2
+```
+
+
+
+Or for a single account:
+
+
+
+```
+imunify360-agent config update --user user1 '{"WORDPRESS":{"waf_enabled": false}}'
+```
+
+
+
+For all options, and for enabling or disabling individual WAF rules server-side, see the
+
+```
+imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection": true}}'
+imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection": false}}'
+```
+
+
+
+Set the default preset applied to sites that have not chosen their own — one of
+
+```
+imunify360-agent config update '{"WORDPRESS":{"ai_bot_protection_preset": "strict"}}'
+```
+
+
+
+While the feature is off server-wide, the