Platforms

WordPress

WordPress is recognised from its asset paths (`/wp-content/`, `/wp-includes/`), its REST API link, its cookies and, most directly, its generator meta tag — which a stock installation adds to every page and which names the exact WordPress version. Recognition switches on a set of WordPress-specific checks: which default files and endpoints answer, which plugins and themes the pages reveal, and which versions are published. Plugin vulnerabilities, users and the admin area are outside what an external audit sees.

How the engine recognises it

A generator meta tag naming WordPress — weight 95, the strongest signal.

`/wp-content/` asset paths — weight 70; `/wp-includes/` paths — weight 60.

A `/wp-json` link in the markup — weight 55, or in a `Link` response header — weight 60.

A `wordpress_` or `wp-settings-` cookie — weight 60.

Any one of the strong signals is enough; several together report with the highest confidence the scale allows.

Why the version is usually public

WordPress core hooks its generator function to the page head by default, and that function outputs `<meta name="generator" content="WordPress x.y.z">` with the installed version.

Core also adds a REST API discovery link to the page head and a `Link` header to responses by default, which is why those two signals are so common.

The version check reports a core version only when it is published this way or in a core asset's version string, and never infers one.

A published version is an inventory fact. What matters is whether it is current, which the version tool page explains how to judge.

What recognition switches on

Endpoint checks: whether the login page, the XML-RPC endpoint and the REST API index answer — each with a single plain request, and never with a login attempt or a method call.

File checks: accidentally served configuration or backup files, the default readme and licence files, and directory listings in standard folders.

Inventory: plugins and themes whose assets appear in pages already crawled, with versions only where they are advertised.

Runtime and caching: the PHP version from server headers, and caching or object-cache plugins identifiable from their public signatures.

None of these runs on a site that is not recognised as WordPress, which keeps other sites free of irrelevant findings.

Where each finding is explained

The exposure tool page explains exactly which paths are requested and how to read the result without over-reacting.

The version tool page explains where versions become public and what to do with the list.

A served configuration file has its own problem page, because it is the one finding in this set that exposes credentials.

An unsupported PHP version is a problem page too, since it affects every plugin on the site.

What an external audit cannot see on WordPress

Plugins that add no public assets to the pages crawled — many administrative plugins are invisible from outside.

Whether an installed plugin version has a known vulnerability: the audit reports the versions it observes, not a vulnerability database verdict.

User accounts, roles and the admin area, which are never probed.

Backups, updates scheduling and file permissions, which are server-side.

The version in asset URLs

WordPress core's script loader sets the default version of registered scripts and styles to the installed WordPress version.

Core assets are therefore requested with a `ver=` query string carrying that version, which is why removing the generator tag alone does not hide it.

The version check reads this core asset version as its second source, and reports it only when the string is present.

Plugin and theme assets carry their own version strings, which is what the plugin and theme inventory reads.

Frequently asked questions

How do I stop WordPress publishing its version?
The generator tag comes from a function core adds to the page head by default; it can be removed from there. Keeping WordPress updated matters more than hiding the number.
Does the audit try to log in to WordPress?
No. It checks whether the login page is served, with a plain request. No credentials are ever submitted.
Why are some of my plugins not listed?
Only plugins whose assets appear in the pages crawled are observable. Plugins that work only in the admin area leave no public trace.

Sources

Related

VeriFixScan crawls a site and applies its checks to every page it reaches, keeping the evidence behind each finding. Scanning one website is free.

Scan a website