=== ByticsLab Age Restrictions for WooCommerce ===
Contributors: tripleten
Tags: woocommerce, age restriction, age verification, age gate, restricted products
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
WC requires at least: 6.0
WC tested up to: 10.9.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Donate link: https://paypal.me/doublewp
Mark WooCommerce products as age-restricted and control age-verification badges, modals, and warning messages across your storefront.

== Description ==

ByticsLab Age Restrictions for WooCommerce lets you mark individual products (alcohol, tobacco, adult content, age-restricted supplements, etc.) as age-restricted and configure exactly how age verification is presented to visitors.

**Features**

* Mark any simple or variable product as age-restricted from the standard product edit screen — no new post type, no extra database tables.
* Configurable minimum age (18, 21, or any custom value).
* A responsive, accessible age-verification modal shown on restricted product pages before the content is visible, with a configurable title, message, minimum age, confirm button, and exit button.
* Exit button can redirect to the homepage, a custom URL, or any WordPress page.
* Visitor confirmation is remembered via a lightweight cookie for a configurable number of days (or just the current browser session), so the modal doesn't repeat on every page view.
* Optional age-restriction badge on shop/archive listing pages (e.g. "18+ Age Restricted").
* Optional warning message below the Add to Cart button on restricted product pages.
* Optional warning notice on the Cart and Checkout pages when a restricted product is in the cart — works with both the classic Cart/Checkout pages and the block-based Cart/Checkout.
* Configurable colors (badge, warning messages, modal accent) and text size, using the native WordPress color picker — no CSS editing required.
* Translation-ready: every string is wrapped for translation, a `.pot` file is included, and translations are bundled for German, French, Spanish, Swedish, Danish, Norwegian, and Hindi.
* Built with the WordPress Settings API, nonces on all form submissions, sanitized/escaped input and output throughout, and WooCommerce hooks only (no template overrides).
* Cache-friendly: the modal is rendered identically for every visitor and toggled purely client-side, so it will not break full-page caching.

= How it works =

1. Edit any product and check "Age-restricted product" in the Product Data → General tab.
2. Configure your minimum age, modal copy, and display options under **WooCommerce → Age Restriction**.
3. Visitors who open a restricted product page see the age-verification modal first. Confirming lets them view the page (remembered via cookie); exiting redirects them away.
4. Optional badges and warning messages reinforce the restriction on listing pages, the product page, and cart/checkout.

== Installation ==

1. Make sure WooCommerce is installed and active.
2. Upload the `byticslab-age-restrictions-for-woocommerce` folder to `/wp-content/plugins/`, or install the plugin ZIP via **Plugins → Add New → Upload Plugin**.
3. Activate the plugin through the **Plugins** menu in WordPress. (Activation is blocked with an explanatory message if WooCommerce is not active.)
4. Go to **WooCommerce → Age Restriction** to configure the minimum age, modal text, exit behavior, and display options.
5. Edit any product you want to restrict and check **Age-restricted product** in the Product Data → General tab.

== Screenshots ==
1. Plugin listing page showing settings option 
2. Plugin settings page with age, modal options.
3. Plugin settings page showing more settings for display, and appearance options.
4. Age-restricted product checkbox in the WooCommerce product editor.
5. Age-restriction badge displayed on a WooCommerce product listing.
6. Age-verification modal shown on a restricted product page.
7. Cart warning shown when the cart contains an age-restricted product.
8. Checkout warning shown when the cart contains an age-restricted product.

== Frequently Asked Questions ==

= Does this work with variable products? =

Yes. The age-restricted flag is set at the product level (the parent product), so it applies to simple and variable products alike — individual variations don't need to be flagged separately.

= Will this break page caching? =

No. The modal markup is rendered identically for every visitor; a small script decides whether to display it based on a client-side cookie. The server never renders different HTML per visitor, so full-page caching plugins and CDNs are unaffected.

= Is this compatible with WPML, Polylang, or Loco Translate? =

The plugin's own interface strings (labels, buttons, error messages) are wrapped with standard WordPress i18n functions and ship with a `.pot` file, so tools like Loco Translate can translate the plugin UI immediately, and WPML/Polylang can translate it as a standard text-domain-based plugin.

The *content you type into the settings* (modal title/message, warning text, badge text) is stored as plain option values, which are not automatically per-language. To show different wording per language for that content, register the relevant option fields with your multilingual plugin's string translation feature (e.g. WPML's String Translation, or Polylang's settings translation) — this has not been pre-wired or tested against every multilingual plugin/version combination, so please verify on your setup before relying on it in production.

= What happens to my settings if I deactivate the plugin? =

Nothing — settings and product meta are preserved. They are only removed if you delete the plugin from the Plugins screen.

= Does the cart/checkout warning work with the block-based Cart and Checkout pages? =

Yes. The warning is displayed on both the classic, shortcode-based Cart/Checkout pages and the block-based Cart and Checkout blocks.

= Once I confirm my age on one product, do I have to confirm again for other restricted products? =

No. The confirmation is remembered site-wide (via a single cookie) for the configured number of days, not per product. Once you confirm on any age-restricted product, you won't see the modal again on other restricted products until the cookie expires or is cleared.

= What data does this plugin store in cookies? =

The plugin sets one cookie, named `waarm_age_verified`, in the visitor's browser when they click the confirmation button on the age-verification modal. It stores only a fixed value (`1`) meaning "this visitor has confirmed they meet the minimum age" — no personal data, no actual age or birthdate, and no tracking identifiers. It expires after the number of days set in **Remember Confirmation For (days)** under the plugin settings (or when the browser session ends, if that setting is 0). No other cookies are set by this plugin.

== Changelog ==

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
