Age Gate


There are many uses for restricting content based on age, be it movie trailers, beer or other adult themes. This plugin allows you to set a restriction on what content can been seen or restricted based on the age of the user.


  • Ask users to verify their age on page load
  • SEO Friendly – common bots and crawlers are omitted from age checks
  • Ability to add custom user agents for less common bots
  • Shortcode for in content restrictions
  • Choose to restrict an entire site, or selected content
  • Select a different age on individual content
  • Allow certain content to not be age gated under “all content” mode
  • Three choices for input; dropdowns, input fields or a simple yes/no button
  • Customise the order of the inputs based on your region (DD MM YYYY or MM DD YYYY)
  • Allow a “remember me” check box if desired
  • Ability to omit logged in users from being checked
  • Add your own logo
  • Update the text displayed on the entry form
  • Select background colour/image, foreground colour and text colour
  • Use built in styling out of the box, or your own custom style
  • Ability to add legal note or information to the bottom of the form
  • Redirect failed logins to a URL of your choice e.g. an alcohol awareness website.
  • Ability to use a non caching version
  • Various hooks to add even more customisation such as additional form fields
  • Compatible with multilingual plugins WPML, Polylang (2.3+), WP Multilang


  • An example of Age Gate
  • The Restrictions settings page
  • Age Gate has a variety of customisable message settings
  • The appearance can be tailored to fit your website
  • Advanced options include the use of a JavaScript Age Gate and a custom CSS editor
  • Manage what users can change Age Gate's setting, restrict posts and exclude settings from certain post types.


  1. Upload the ‘age-gate’ folder to the ‘/wp-content/plugins/’ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Visit ‘Age Gate’ admin section and adjust your configuration.

Be sure to check the ‘Access’ settings tab to grant permissions and omit any post types you don’t wish to display Age Gate options on.


I can’t get past the Age Gate / The Age Gate only worked once

The most likely cause for this is caching on your site either via a plugin or your hosting provider. If the Age Gate appears stuck try using the JavaScript mode in the advanced tab and clear any caches.

Can I restrict a particular page?

You can. If you use selected content, a checkbox will appear in content pages

Can I add my own logo/branding?

Of course, it’s your site

I’m in X country, can I format the date style?

Yes! DD MM YYYY and MM DD YYYY are supported along with a choice of how the dates are entered.

I use caching, will that be affected?

From version 1.4.0 those using caching can select the “Cache Bypass” option to allow age gating even with caching on. Be sure to empty your cache when making changes to the plugin settings. From 2.0.0 this option is in Advanced -> Use uncachable version


The best plugin for are verification, with a ton of extra features.
All you need for the age verification handling on your website - detailed field options, custom styling, multilingual versions, top support. You may add basic custom code for additional styling as well.
Thank you very much for this fantastic age verification plugins. Works great, fast and without any bugs, settings are easy, and the plugin is free, thanks to the creator.


Age Gate はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。


“Age Gate” は7ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“Age Gate” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。



  • Added – Option to store data in localStorage instead of cookies
  • Added – Filter to final validation rules
  • Fixed – Multilingual messages not translating if langauage key is hyphenated
  • Fixed – Deprecations in new PHP versions
  • Fixed – Issue were some ages would retrigger the modal
  • Fixed – Errors in loading text domain


  • Fixed – Fatal error under PHP8.1 when storing access settings
  • Fixed – Error on activation if administrator role non-existent


  • Fixed – URL comparison in Safari


  • Added – option to inherit status from ancestors
  • Added – option for custom date error message
  • Fixed – admin messages showing erroneously
  • Fixed – success redirects in JS mode


  • Added – polyfill for mbstring


  • Fixed – Issue in Standard mode where passing Age Gate would empty shopping cart


  • Fixed – Issue where Breeze cache wouldn’t render Age Gate.
  • Updated – translation file


  • Fixed – Error message translation
  • Fixed – Autotabbing when using regions addon
  • Fixed – Multilingual messages not translation if langauage is the same
  • Fixed – potential error thrown in array flatterning method
  • Fixed – Anonymous mode allowing undesired users through
  • Fixed – Selects not repopulating in PHP mode
  • Added – option to sort select years
  • Added – option to render loading icon as image
  • Changed – default minimum select year to 1900
  • Changed – button submission handler to (hopefully) resolve lingering mobile issues
  • Removed – unused admin modal styles


  • Fixed – remove buttonshowing even with no image selected
  • Added – Legacy hook for age_gate_logo
  • Added – New hooks for logo manipulation


  • Fixed – Multilingual fields missing since 3.0.6
  • Added – CSS Variable –ag-transition-timing
  • Changed – CSS Variable –ag-transition to –ag-transition-duration


  • Fixed – Wrong input being selected by default when not DDMMYYYY
  • Fixed – JS hooks continuously rechallenging users
  • Fixed – toolbar toggle inoperable on insecure sites


  • Fixed – JS Hook when age gate already passed
  • Fixed – JavaScript exit transitions
  • Added – AJAX fallback if REST unreachable
  • Added – age_gate_hidden JavaScript event
  • Changed – Admin nav behaviour
  • Changed – Admin validation behaviour


  • Fixed – typos in README
  • Fixed – additional tools not displaying
  • Fixed – per page controls not showing
  • Added – checks for dependencies
  • Added – filter for cookie domain
  • Changed – default cookie domain is current domain
  • Changed – cookie name filter
  • Changed – default colours in line with v2
  • Changed – Legacy hook class name


  • Fixed – Restriction display in admin
  • Fixed – Implemented new polyfill for Safari event submitter
  • Fixed – Phantom validation errors in Content section
  • Fixed – Double escaping in buttons prompt
  • Added – cleanup for previous cron schedule
  • Changed – Removed use of PHP short tags


  • Fixed – Fatal error under some settings combination
  • Fixed – Hide display of default scrollbar


  • Fixed – 0 valued opacity not being reflected on the site
  • Fixed – iOS Safari scrolling when Age Gate visible
  • Fixed – Older versions of Safari not operating with buttons
  • Fixed – Inability to store appearance settings
  • Fixed – Improved data sanitation
  • Fixed – Custom title output in js/munge mode
  • Added – CSS variable for loader colour
  • Added – Default post types to ignore in admin e.g. shop orders or attachment
  • Changed – Default max-width on logo to be 100%
  • Changed – Button styles prefixed with element
  • Changed – Cookie length filter to be time and length


  • Added – Standard cookie length filter age_gate/cookie/length
  • Added – PHP version check message
  • Fixed – per content toggle display incorrect status
  • Fixed – minor stylistic elements for wider default support
  • Fixed – Javascript error in focus trap when using buttons
  • Fixed – Excessively strict validation rules
  • Fixed – Escaped characters showing on front end
  • Removed – API Error warning as return false flags
  • Removed – Unused API endpoint


  • Complete rewrite
  • Improved Taxonomy inheritance
  • Removed: Use of admin-ajax in JS mode
  • Removed: Custom CSS editor
  • Removed: jQuery dependencies
  • Changed: Custom editor to support markdown and be stricter
  • Added: Ability to override templates in theme
  • Added: Easily add classes and other attributes
  • Added: Option to load Age Gate earlier in the DOM
  • Various performance and security improvements