Overview #
A loopback request is WordPress making an HTTP request back to itself. Several important features depend on it: Site Health checks, WP-Cron triggering, plugin update checks, and cache purging. When loopback is blocked, those features silently break.
The Alert #
REST_LOOPBACK (warning): the REST API loopback request failed. Some admin features and health checks depend on loopback.
What Breaks #
- Site Health: WordPress’s own health checks stop working
- WP-Cron: HTTP-triggered cron can’t fire (see Stuck WP-Cron Jobs)
- Plugin updates: update checks fail
- Cache purging: page builders and caching plugins can’t purge via loopback
- Plugin health checks: many plugins test loopback on activation
What Blocks Loopback #
| Cause | Description |
|---|---|
| Firewall / WAF | Security rules blocking server-to-self requests |
| CDN | A CDN intercepting the internal request instead of the origin |
| Security plugins | Over-aggressive lockdown blocking loopback IPs |
| WP_HTTP_BLOCK_EXTERNAL | If defined as true in wp-config.php, ALL external HTTP (including loopback to your own domain) is blocked |
| .htaccess / rewrite rules | Custom rules breaking the API routes |
| SSL mismatch | Site URL vs certificate mismatch breaking the internal request |
The WP_HTTP_BLOCK_EXTERNAL Trap #
If wp-config.php contains:
define('WP_HTTP_BLOCK_EXTERNAL', true);
WordPress blocks external HTTP requests: and loopback to your own domain counts as external. Fix by allowing your own host:
define('WP_HTTP_BLOCK_EXTERNAL', true);
define('WP_ACCESSIBLE_HOSTS', 'xponent.co.za');
(Or remove the block entirely: it’s a rarely-needed hardening that causes more breakage than it prevents.)
Testing Loopback #
- WordPress admin → Tools → Site Health: shows loopback status
- WP-CLI:
wp eval 'wp_remote_get(home_url("https://spcdn.shortpixel.ai/spio/ret_img,q_cdnize,to_webp,s_webp/xponent.co.za/")); echo is_wp_error($r) ? $r->get_error_message(): "OK";'
What You Should Do #
If you recently installed a security or firewall plugin, that’s a likely trigger: tell us when it started and what you added around that time.
The Xponent Standard #
Loopback works by default on Xponent infrastructure. When it breaks, it’s usually a security plugin, a custom rule, or WP_HTTP_BLOCK_EXTERNAL added after setup: we find and fix the specific cause. On managed sites we handle it for you.