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
  • Compliance: Prefixed template-scope variables ($fcta_is_enabled, $fcta_pro_url)
  • Cleanup: Removed unused duplicate uninstall function in main plugin file (uninstall.php is canonical)

2.0.5

  • Security: All template output now uses wp_kses_post() for pre-built HTML (image, stars, price)
  • Security: All $wpdb queries now use $wpdb->prepare() throughout (migration, uninstall)
  • Fixed: Template rel attribute uses proper if/endif instead of ternary echo
  • Improved: PCP Plugin Repo compliance pass

2.0.4

  • Fixed: $_POST handling now uses wp_unslash() and sanitize_text_field() per WordPress coding standards
  • Fixed: Nonce verification uses sanitized input (PCP compliance)
  • Improved: Meta save uses map_deep() for bulk sanitization before field-specific sanitizers

2.0.3

  • Changed: Dismiss now hides bar for current page view only (refresh brings it back)
  • Changed: Session/timed dismiss persistence moved to Pro as part of Display Rules
  • Simplified: Frontend JS reduced to minimal dismiss handler (~35 lines)

2.0.2

  • Fixed: Dismiss button no longer overlaps CTA button — now part of flex flow
  • Fixed: Settings page pro teaser sections now render with proper backgrounds, borders, and badges in WordPress admin
  • Fixed: Admin CSS specificity increased to override WordPress admin defaults
  • Fixed: Feature card grid displays correctly as 3-column layout

2.0.1

  • Added: Pro feature teasers on settings page (greyed-out Appearance, Display Rules, Conversion & Tracking, Schema & SEO, Per-Post Extras sections)
  • Added: Bottom CTA banner for pro upgrade
  • Added: Admin CSS loads on settings page (previously only loaded on post editor)

2.0.0

  • Complete rewrite with modern architecture
  • Vanilla JavaScript (no jQuery dependency)
  • Proper output escaping and sanitization throughout
  • Accessible: ARIA labels, keyboard navigation, focus management
  • Responsive mobile layout
  • Dismiss button with session persistence
  • Global default settings (button text, currency, link rel)
  • Settings API integration
  • Block editor (Gutenberg) compatibility
  • Migration from v1 meta keys

1.0.1

  • Initial public release

Plugin Website
Visit website

Version:
2.1.2
Last Updated
June 10, 2026
Requires
WordPress 5.8
Tested Up To
WordPress 7.0
Requires PHP
8.0

Share Post

Join our newsletter.

Get insights into what’s happening at ChangelogWP right in your inbox. We don’t believe in spam.