| 开发者 | wonderfulplugins |
|---|---|
| 更新时间 | 2026年10月5日 04:31 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv3 |
| 版权网址: | 版权信息 |
CF-IPCountry header) into the plugin via the wonderful_geoblocking_countries_client_ip and wonderful_geoblocking_countries_pre_country_code filters.
This plugin uses IP2Location LITE data available from https://lite.ip2location.com. The optional VPN list is built from data by X4BNet (https://github.com/X4BNet/lists_vpn, MIT license), antonme/ipranges (https://github.com/antonme/ipranges, CC0) and RIPE NCC RIPEstat (https://stat.ripe.net/).
wonderful-geoblocking-countries folder to the /wp-content/plugins/ directory.The IP2Location LITE database is free but published under its own license that requires every user to register for their own copy. The download with your personal token takes less than a minute and enables automatic monthly updates.
Nothing — no visitor is blocked. The plugin shows an admin notice until a database is installed, and visitors whose country cannot be determined are always let through.
Not while you are logged in: administrators are always exempt from all three rules. Only the login rule can affect you when you are logged out and your own country is on its list — the settings page warns you about exactly that.
Behind a proxy, REMOTE_ADDR is the proxy's address, not the visitor's. Use the wonderful_geoblocking_countries_client_ip filter to supply the real client IP from a header you trust, or short-circuit the lookup entirely with wonderful_geoblocking_countries_pre_country_code (e.g. return the value of Cloudflare's CF-IPCountry header).
The site access rule runs on every frontend request, including feeds and the REST API. The WordPress admin (including admin-ajax) and wp-login.php are excluded from it.
Tick VPN list under Databases and download it, then tick VPN in every area where VPN users should be blocked. A visitor whose IP lies in a range of a known VPN provider is then blocked — regardless of the country and even in allow-list mode (otherwise a VPN server in an allowed country would be a way in). The list combines the X4BNet list, the server lists of the big providers (NordVPN, Surfshark, ExpressVPN, ProtonVPN, Mullvad, PIA and others) and the complete networks of pure VPN operators, and is updated daily. iCloud Private Relay is never counted as a VPN. No free list catches every VPN, though: small or self-hosted VPNs, Tor and residential proxies are usually not included. Logged-in administrators are never blocked, VPN or not.
We tried it: the free IP2Proxy LITE edition only lists open public proxies — no VPN servers and no Tor exits (those are reserved for the paid edition) — and is more than 1 GB in size. The combined VPN list takes about 120 KB on your server and actually recognises VPN providers.
Yes. Once the VPN list is installed:
$is_vpn = apply_filters( 'wonderful_geoblocking_countries_is_vpn_ip', null, $ip );
It returns true or false, and the default (null) while the VPN list is disabled or not installed.
No. Country lookups run locally against the downloaded database file. The only external request is the database download itself, which you trigger with your own token.
wonderful_geoblocking_countries_vpn_asns filter to add more VPN networks (AS numbers).wonderful_geoblocking_countries_is_vpn_ip filter so other plugins can reuse the VPN list.wonderful_geoblocking_countries_country_for_ip filter so other plugins can reuse the IP2Location country lookup.