Releases: CHIROBASIX-LLC/cbx-plugin-google-reviews
Release list
v1.7.0 — [cbx_google_reviews] inline shortcode
Adds a shortcode so Google reviews can be rendered in page content, not only in the floating slide-out panel.
[cbx_google_reviews count="12" columns="3" header="What Our Patients Say"]
count— how many reviews (default 12,0= all cached)columns— desktop grid columns 1–4 (default 3), collapsing to 2 on tablet and 1 on mobileheader— optional heading above the grid
Reuses the existing card markup and the v1.6.0 <symbol> sprite. Scoped to .cbxr-inline because the panel's card CSS is scoped to #cbxr-widget (which is position: fixed). Inherits the theme's fonts and colours — only layout is specified. The floating badge is unaffected; both can appear on the same page.
Built for testimonials pages.
v1.6.1 — optional cap on rendered reviews
Adds cbxr_max_display option / cbxr_max_display_reviews filter to cap how many reviews render into the slide-out panel and its JSON-LD. Default 0 = all (unchanged fleet-wide). Set per-site where thousands of words of identical review boilerplate on every page is undesirable.
v1.6.0 — dedupe repeated review icons into a <symbol> sprite
Cuts the reviews widget's contribution to every page by deduplicating its repeated icons.
The widget renders every cached review into the closed slide-out panel. On a practice with 82 reviews that meant ~840 star SVGs and 82 Google icons per page — roughly 143KB of duplicated path data in every single response. The path data is now emitted once as <symbol>s and referenced with <use>.
Measured on arsenaultchiro.com/about/: 508KB → 427KB (−81KB, −15%). Inline SVG 170KB → 90KB.
Rendering is unchanged — verified live: the badge's 4 gold stars + half star, the summary row (4.8, 96), the 5-star row on each review card, and the multicolour Google icon on every "Posted on Google" line all render identically, with no layout shift and no console errors.
Also fixes a latent defect: the half-star gradient was emitted as cbxr-half-1..5 once per review card, so the page carried dozens of duplicate element ids and every half star already resolved to the first definition. There is now a single shared gradient id.
Implementation notes for future edits:
- The sprite is printed outside
#cbxr-widget, so the#cbxr-widget ... svgsizing rules (all!important) cannot match it. - It is hidden by being zero-sized and absolutely positioned rather than
display:none, which keeps<use>resolution reliable. - Full and empty stars share one geometry symbol and take their colour by inheriting
fillfrom the referencing<svg>, so that symbol's path deliberately carries no fill.
v1.5.6 — updater hardening (editor-safe)
Same updater hardening as cbx-site-fixes v1.4.1: failure backoff transient (15 min), 3s HTTP timeout (was 10s), no network I/O on latency-sensitive requests (admin-ajax / post.php?action=elementor). No functional changes to the reviews widget.
v1.5.5 — never emit a rating LocalBusiness without an address
Fixes SEMRush 'A value for the address field is required'. The reviews widget only added address when cbxr_place_address was populated; during a reviews-cron refresh gap it could emit a LocalBusiness + rating with no address (invalid). Now skips the schema when no valid address is available (a site can still supply one via the cbxr_schema filter).
v1.5.4 — reviews panel survives WP Rocket RUCSS / Delay JS
Fixes the Google Reviews panel rendering un-hidden, stacked below the footer, on sites using WP Rocket "Remove Unused CSS" (Optimize CSS Delivery).
The slide-out panel was positioned and hidden entirely via the stylesheet (position:fixed + an off-canvas transform). WP Rocket's Remove Unused CSS strips the external stylesheet and empties inline <style> blocks — including the v1.5.3 critical CSS — because the hidden-panel rules look "unused". With its CSS gone, the panel fell into normal document flow below the footer.
What changed
- Badge, panel and overlay are positioned/hidden via inline
styleattributes, which survive every CSS optimizer (RUCSS, async/critical CSS, minify). The panel can no longer dump below the footer. - Open/close is driven through inline styles in JavaScript, so it works even when the
.cbxr-openstylesheet rule is stripped. - WP Rocket filters keep the widget fully styled and functional under Optimize CSS Delivery + Delay JavaScript: the stylesheet is excluded from Remove Unused CSS, the script is excluded from Delay JS, and the widget selectors are safelisted as a fallback.
Verified on a live RUCSS site. Auto-updates fleet-wide via the built-in updater.
v1.5.3 — valid LocalBusiness schema + reviews panel FOUC fix
Fixes
- Structured data: the reviews-widget
LocalBusinessJSON-LD now includesaddress(PostalAddress),telephone,geo,image,priceRangeand the site URL. Google flags aLocalBusinessthat carries ratings/reviews but has noaddressas invalid — this clears that "invalid structured data" error. - Self-healing NAP: the Place Details refresh now fetches and persists the business address, phone and geo (
cbxr_place_address/_phone/_geo). Existing sites populate automatically on their next reviews refresh — no manual step. - Panel FOUC: inline critical CSS keeps the slide-out panel positioned/hidden at first paint, so it can no longer flash un-hidden below the footer when CSS is deferred (WP Rocket Remove Unused CSS / async).
- Added a
cbxr_schemafilter for customizing the emitted schema.
Auto-installs on all sites via the built-in GitHub updater.
v1.5.2 — Secure API-key storage
- Security: the Google + Outscraper API key fields no longer render their saved value into the settings page HTML (page-source leak). A saved key now shows only a masked hint; leave blank to keep, type to replace.
- Security: optional wp-config.php constants CBXR_GOOGLE_API_KEY / CBXR_OUTSCRAPER_KEY keep keys out of the database entirely.
- Keys remain server-side only (Google Places + Outscraper fetches); no frontend/REST exposure.
v1.5.1
Maintenance: repoint the GitHub self-updater to CHIROBASIX-LLC/cbx-plugin-google-reviews. No functional or visual changes — updater pointer + version only.
v1.5.0
Changes
- Default accent color changed from
#e8a87cto#ffffff - Accent color input switched from color picker to HEX text field
- Floating badge star icons increased from 18px to 22px
- Added JSON-LD structured data (LocalBusiness + AggregateRating + individual Review objects)