

Server-side enforcement: an unverified visitor's page source contains no restricted markup at all. The protected text is absent from the HTTP response, not hidden with CSS.
Webkoding AgeWall adds real, server-side age verification to WordPress. Unlike simple “click to confirm” overlays that only hide content with CSS or JavaScript, AgeWall withholds protected content on the server: an unverified visitor never receives the restricted markup in the HTTP response, so it cannot be revealed by disabling scripts or reading the page source.
Gate your whole site, or just the pages, posts and blocks that need it. Set the minimum age, choose how visitors prove it, and decide what happens when they have not — all from one settings screen.
[agewall] shortcode and the AgeWall block.webkoding-agewall text domain and a languages/webkoding-agewall.pot template is included.Everything above is the free plugin and none of it is stubbed, time-limited or waiting for
a key. If you need more than a self-declared age, there is a separate paid add-on,
AgeWall Pro, that installs beside this plugin through the hooks documented above:
A self-declared “I am over 18” satisfies nobody who is actually regulated. The free plugin
holds the line on the server, which is the hard part; what it cannot do is tell you who
passed, hold a Frenchman to a different age than an Australian, or show a regulator
anything. That is what the add-on is for.
Details and price: https://webkodingtheme.com/plugins/agewall-pro
AgeWall is built to be extended. Documented hooks let you add your own verification provider (agewall/register_providers), supply your own rule set (agewall/rules), resolve the visitor’s country (agewall/visitor_country), observe every verification attempt (agewall/verification_attempt), and add your own settings tabs and admin screens (agewall/settings_tabs, agewall/admin_menu).