Changed: Every feature is now available unconditionally, with no license, plan, activation, or “valid user” checks anywhere in the plugin. The internal plan/license helper and all feature gates have been removed so the plugin is fully functional out of the box, in line with the WordPress.org plugin directory guidelines.
Removed: “Upgrade to Pro”, “Get License Key”, and “Purchase License Key” promotional links, the unused upgrade page, and the related admin notices.
1.3
Fixed: The [affcoupon_btn] coupon-code button rendered twice due to a duplicated render hook; it now renders once.
Fixed: The hidden-coupon popup is now moved to the page body before it opens, so it stays centered on themes whose layout uses CSS transforms (previously it could appear off to one side).
Fixed: The “Copy code” button now works on current WordPress (which bundles clipboard.js v2). Copying is handled by a single built-in routine that uses the modern Clipboard API with a fallback, and shows a “Copied” confirmation on every coupon template.
Performance: Frontend CSS/JS now load only on pages that actually render coupons (coupon archive, coupon/vendor taxonomy, the coupon widget, or posts that use an AffCoupon shortcode) instead of site-wide.
Security: Inline coupon styles are now passed through an output-escaping function (wp_strip_all_tags()) when added via wp_add_inline_style().
Security: The admin “restored to revision” notice no longer reads the unverified revision request value; the revision title is derived from the post’s own revisions.
Security: The CSV/XML import AJAX handler verifies its nonce and current_user_can() capability before any request data is processed.
Security: Coupon meta-box fields are now run through a context-appropriate core sanitizer at the point each value is read from the request.
Security: Admin asset loading now identifies plugin screens by their admin hook suffix and AJAX render-mode by the active hook, rather than reading request variables.
Security: The CSV/XML import form now carries a nonce that is verified before any submitted values are read back into the page.
1.2
Fixed: Settings saved on the Settings page were not being read by frontend templates due to an internal prefix mismatch. All settings now apply correctly on the frontend.
Fixed: Frontend coupon-submission form now uses an explicit nonce + capability check on the server side.
Fixed: Per-term taxonomy image option name is now properly prefixed (affcoupon_taxonomy_term_*).
Fixed: Google Fonts on the welcome page now load via wp_enqueue_style() instead of a raw <link> tag.
Security: Sanitized inputs on the CSV/XML import preview form to prevent stored XSS.
Removed: The arbitrary “Custom CSS” textarea, per WordPress.org plugin directory guidelines (use the Customizer “Additional CSS” panel instead).
Internal: Aligned the plugin text domain with the plugin slug (affcoupon). Renamed all internal wpcd_* identifiers to AffCoupon-owned prefixes.
Internal: Documented bundled third-party libraries and the webpack build pipeline in this readme.