What this means
The plugin sentence: WordPress itself refused the requests from your site to itself, so none was sent. WP_HTTP_BLOCK_EXTERNAL is on, and your own address is not let through.
Before any request leaves, WordPress decides whether it is allowed (WP_Http::block_request()). When it refuses, nothing is sent, so the plugin knows the cause is a setting on this site and says so instead of reporting a network failure. The TLS connection of checks A2 and A5 is not opened either.
Like every request Edge Doctor sends, these go only to the hosts of your Site Address and WordPress Address (home_url() and site_url()). An address WordPress gives on another host, such as a single sign on page, is never requested.
Checks that report it
These checks can report it:
- A1 Cloudflare detection and connection type
- A2 Flexible SSL
- A4 Redirect loops and HTTP to HTTPS
- A5 Certificate on your server
- C1 wp-admin and the login page in the cache
- C2 WooCommerce cart, checkout and account in the cache
- C3 Logged-in pages in the public cache
- C4 REST API and Store API in the cache
- C5 Login cookies and private responses
- C6 Cached pages older than their nonces
- D1 Rocket Loader
- D2 Email Obfuscation
- E1 Cloudflare blocking your own server
- E2 Cloudflare Access in front of admin-ajax.php
- E3 Cloudflare 52x errors
Symptoms you may notice
- Several groups say Could not check, and this reason is named instead of a network failure.
- Other plugins that call your own site or outside services also fail, because WordPress refuses their requests the same way.
Why it happens
Without WP_HTTP_BLOCK_EXTERNAL WordPress refuses nothing. With it, every host is refused except localhost and the host of the WordPress Address (siteurl), unless a filter on block_local_requests returns true; other hosts pass only when listed in WP_ACCESSIBLE_HOSTS. So the two usual causes are a filter that blocks local requests, and a Site Address (home) on a different host than the WordPress Address, for example www and the bare domain.
Confirm it by hand
Look in wp-config.php for these constants:
grep -nE "WP_HTTP_BLOCK_EXTERNAL|WP_ACCESSIBLE_HOSTS" wp-config.php
wp option get home
wp option get siteurlIf the hosts of home and siteurl differ, the Site Address is the one refused.
How to fix it
In WordPress (wp-config.php), one of these:
- add the host of your Site Address to
WP_ACCESSIBLE_HOSTS, separated by commas from the hosts already there; - remove the code that makes
block_local_requestsreturn true; - or remove
WP_HTTP_BLOCK_EXTERNALif nothing on the site needs it.
define( 'WP_ACCESSIBLE_HOSTS', 'www.example.com' );In Cloudflare: nothing to change; the requests never left the server.
Limitations
The plugin reads the decision WordPress makes, so the reason is certain. It cannot tell which plugin or file added a filter.
Related checks
Sources
Run these checks on your own site with Edge Doctor for Cloudflare®, free on WordPress.org.
Edge Doctor for Cloudflare® is not affiliated with or endorsed by Cloudflare, Inc. Cloudflare is a registered trademark of Cloudflare, Inc.