Floating CTA – Sticky Product Bar for Affiliate & Review Sites
Changelog
2.1.2
Fixed: the image picker and validation now load on edit screens for every supported post type (pages, products, and Pro custom post types), not just posts.
Fixed: a half-star (0.5) rating no longer emits review schema below the declared minimum rating, which Google rejected.
Fixed: dismissing the review-request notice now sticks instead of reappearing on every page.
Housekeeping: uninstall now removes all of the plugin’s leftover options.
2.1.1
Hardening: JSON-LD schema output now adds JSON_HEX_TAG | JSON_HEX_AMP so it cannot break out of the script context.
Hardening: the inline-CSS guard in the bar template is now case-insensitive.
Use esc_url_raw() in place of the deprecated sanitize_url() for stored button/image URLs.
2.1.0
Added: “Schema Output” toggle (Settings > General) to turn the Product review schema on or off site-wide.
Changed: Schema is now a Product with a nested editorial Review (reviewRating + author) instead of an AggregateRating with a count of 1. A single critic score is a review, not an aggregate – this validates as both a Product snippet and a review snippet, and only emits on bars that have a star rating.
Fixed: No longer emits a Product Offer (price + availability) by default. On affiliate and review sites the Buy button points to a third-party seller, so an Offer on your own URL pulled pages into Google’s Merchant listings program and triggered “missing shippingDetails / hasMerchantReturnPolicy / global identifier” warnings that an affiliate (or a service such as a financial product) cannot satisfy.
Added: fcta_schema_offer filter (default false) to restore the Offer node for sites that genuinely sell the item on their own domain.
2.0.17
Added: Template hook fcta_after_cta_button fires between the primary CTA and the dismiss button, letting add-ons place secondary buttons next to the primary CTA.
2.0.16
Added: Review prompt notice after genuine usage (3+ bars configured, or 14+ days with at least one bar). Dismissible, never re-nags. Shows on plugin settings, Plugins, and Dashboard screens only.
Changed: Tags updated for better WordPress.org directory discoverability.
Changed: Short description rewritten for broader appeal beyond affiliate-only use cases.
2.0.15
Changed: Plugin description rewritten in active voice (“Turn product reviews into clicks…”) for the WP-admin plugins list and the WordPress.org listing.
Changed: Removed “Badge labels” from the Pro features comparison and Pro teaser. The feature is no longer offered in Floating CTA Pro.
2.0.14
Added: Template extension hook fcta_settings_page_top (fires above the tab nav on Settings → Floating CTA). Lets add-ons render compact header toolbars.
Changed: Plugin description trimmed for clarity.
2.0.13
Added: Two template extension hooks — fcta_product_info_top (inside the product-info column above the title) and fcta_before_price_col (inside the inner flex row immediately before the price column). Lets Pro position badge/coupon-style add-ons near the title and price without DOM manipulation. No user-facing changes in free.
2.0.12
Fixed: Block editor “Save” / “Update” button did nothing when the plugin was active. The validation subscriber dispatched lock/unlock unconditionally on every save attempt, which re-entered itself via Gutenberg’s synchronous subscriber emit and overflowed the call stack. Validation is now driven by a re-entry-guarded reconcile that only dispatches on real state transitions, so saves go through immediately when the bar is disabled and unlock cleanly the moment a previously-flagged field is fixed.
2.0.11
Added: Five global color settings (bar background, button, button hover, button text, title) configurable from Settings → Floating CTA → Colors with hex inputs sanitized via sanitize_hex_color()
Added: Schema.org Product + Offer + AggregateRating JSON-LD output, hooked into fcta_after_render_bar with built-in conflict avoidance (skipped automatically when another plugin already emitted a Product schema)
Added: Three-tab settings layout (General, Colors, Pro features). Add-ons can register additional tabs via the fcta_settings_tabs filter
Changed: Default button color refreshed to #e85b00 (was #F3961D); default title color to #0a0a0a
Removed: All inline grayed-out Pro teaser sections. Pro features are now described in a single feature-comparison table on the Pro features tab
New filters: fcta_settings_tabs, fcta_schema_enabled, fcta_schema_avoid_conflicts
2.0.10
Fixed: Inline CSS injected via the fcta_bar_inline_css filter is now rendered correctly inside the <style> tag (previous esc_html() call HTML-encoded the CSS attribute-selector quotes, breaking add-on color overrides). </style> breakout still defended via string replacement.
2.0.9
Added: Extension hooks API (fcta_meta_fields, fcta_supported_post_types, fcta_should_show_bar, fcta_should_render, fcta_render_data, fcta_bar_classes, fcta_bar_inline_css, fcta_settings_defaults, fcta_register_settings, fcta_show_pro_section) and action hooks (fcta_before_render_bar, fcta_after_render_bar, fcta_bar_inside, fcta_after_settings_form, fcta_meta_box_after_fields) to let companion plugins extend behavior cleanly
No user-facing changes
2.0.8
Tested with WordPress 7.0
Improved: Listing copy and tags refined for clearer positioning (sticky CTA bar for Amazon affiliate and product review publishers)
No functional changes
2.0.7
Compliance: Replaced all disabled form controls in the Pro section of the settings page with informational feature cards, so the free plugin contains no locked or restricted UI (WordPress.org Guideline 5)
Compliance: Reworded settings-page copy to describe Floating CTA Pro as a separate plugin available from floatingcta.com rather than an in-plugin unlock
Compliance: Removed “Unlock” language from the upgrade CTA
2.0.6
Compliance: Plugin header name matches readme title (Plugin Check)
Compliance: Trimmed short description to under 150 characters
Compliance: Removed manual load_plugin_textdomain() — WordPress auto-loads translations for .org-hosted plugins since 4.6
Compliance: Annotated necessary $wpdb queries in uninstall and migration with phpcs:ignore + rationale