{"id":284612,"date":"2026-04-17T16:10:33","date_gmt":"2026-04-17T16:10:33","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/g-reviews-pro-engine-ultra\/"},"modified":"2026-08-05T14:09:33","modified_gmt":"2026-08-05T14:09:33","slug":"etchenet-reviews-for-google-business","status":"publish","type":"plugin","link":"https:\/\/pe.wordpress.org\/plugins\/etchenet-reviews-for-google-business\/","author":16192456,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"7.0.9","stable_tag":"7.0.9","tested":"7.0.2","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Etchenet Reviews for Google Business","header_author":"Etchenet","header_description":"Display Google reviews in a carousel, floating badge, and side panel. Manual reviews, CSV\/Excel import, and API sync.","assets_banners_color":"5a7694","last_updated":"2026-08-05 14:09:33","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.com\/paypalme\/etchenet\/","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/etchenet-reviews-for-google-business\/","header_author_uri":"https:\/\/profiles.wordpress.org\/etchenet\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":476,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"6.1.0":{"tag":"6.1.0","author":"etchenet","date":"2026-04-17 16:09:56"},"6.1.1":{"tag":"6.1.1","author":"etchenet","date":"2026-04-17 16:51:44"},"6.1.2":{"tag":"6.1.2","author":"etchenet","date":"2026-05-04 12:34:03"},"6.1.3":{"tag":"6.1.3","author":"etchenet","date":"2026-05-04 12:34:03"},"6.1.4":{"tag":"6.1.4","author":"etchenet","date":"2026-05-04 12:34:03"},"6.1.6":{"tag":"6.1.6","author":"etchenet","date":"2026-08-01 16:47:25"},"7.0.0":{"tag":"7.0.0","author":"etchenet","date":"2026-08-02 02:02:36"},"7.0.9":{"tag":"7.0.9","author":"etchenet","date":"2026-08-05 14:09:33"}},"upgrade_notice":{"7.0.9":"<p>Separates the side-panel close button&#039;s pointer-hover colors from its automatic and keyboard focus states.<\/p>","7.0.8":"<p>Restores the seven style settings identified as non-functional by the completed style audit: four carousel-card surface settings and three component shadow presets.<\/p>","7.0.7":"<p>Applies all side-panel Read-more visual settings through explicit panel-only CSS properties while preserving hover-width inheritance and keyboard focus accessibility.<\/p>","7.0.6":"<p>Separates the side-panel Read-more border from its keyboard-focus outline and adds an optional hover-only border width.<\/p>","7.0.5":"<p>Separates the carousel read-more border from its keyboard-focus outline and adds an optional hover-only border width.<\/p>","7.0.4":"<p>Prevents carousel read-more controls from being clipped at narrow widths or with large visual settings, while preserving configured aspect ratios whenever the content fits.<\/p>","7.0.3":"<p>Adds independent inner and outer carousel-container spacing controls, with a safe automatic migration, responsive overflow protection, and corrected visual-setting bindings.<\/p>","7.0.2":"<p>Restores complete Google + manual review management and global manual reordering in the 7.x administration screen, and adds the carousel-container radius control. Existing manual-order sequences are retained and completed automatically.<\/p>","7.0.1":"<p>Improves floating-badge hover and keyboard-focus states, removes the non-configurable blue container outline, and migrates the new controls automatically.<\/p>","7.0.0":"<p>Major administration-interface and settings-architecture refactor. Existing configurations are migrated automatically on upgrade; no manual action is required.<\/p>","6.1.7":"<p>Uses the configured review count consistently in the floating badge and side panel, including their live administration previews.<\/p>","6.1.6":"<p>Adds configurable full-review modal and \u201cRead more\u201d control colors, plus a modal layer above the side panel.<\/p>","6.1.5":"<p>Adds an optional Google badge review-count override and allows manual reviews without a comment or image.<\/p>","6.1.4":"<p>Finalized English source strings and release metadata updates for WordPress.org translation compliance.<\/p>","6.1.3":"<p>Readme and translation catalogs updated; default UI strings are US English for directory compliance.<\/p>","6.1.2":"<p>Fixes color picker live preview in admin, card header centering, and sidebar panel CSS isolation.<\/p>","6.1.0":"<p>First stable release suitable for the WordPress.org directory. Translation-ready; supports manual order and CSV\/Excel import.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3509082,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3509082,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon-512x512.jpg":{"filename":"icon-512x512.jpg","revision":3509082,"resolution":"512x512","location":"assets","locale":"","width":512,"height":512}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3509082,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3509082,"resolution":"772x250","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["6.1.0","6.1.1","6.1.2","6.1.3","6.1.4","6.1.6","7.0.0","7.0.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3516582,"resolution":"1","location":"assets","locale":"","width":3600,"height":2040},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3516582,"resolution":"2","location":"assets","locale":"","width":3837,"height":2238},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3631434,"resolution":"3","location":"assets","locale":"","width":1954,"height":2095}},"screenshots":[]},"plugin_section":[],"plugin_tags":[786,15046,21827,80,1518],"plugin_category":[43,50,53],"plugin_contributors":[260471],"plugin_business_model":[],"class_list":["post-284612","plugin","type-plugin","status-publish","hentry","plugin_tags-carousel","plugin_tags-google-business","plugin_tags-google-reviews","plugin_tags-shortcode","plugin_tags-testimonials","plugin_category-customization","plugin_category-media","plugin_category-ratings-and-reviews","plugin_contributors-etchenet","plugin_committers-etchenet"],"banners":{"banner":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/banner-772x250.jpg?rev=3509082","banner_2x":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/banner-1544x500.jpg?rev=3509082","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/icon-128x128.jpg?rev=3509082","icon_2x":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/icon-256x256.jpg?rev=3509082","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/screenshot-1.png?rev=3516582","caption":""},{"src":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/screenshot-2.png?rev=3516582","caption":""},{"src":"https:\/\/ps.w.org\/etchenet-reviews-for-google-business\/assets\/screenshot-3.jpg?rev=3631434","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>Etchenet Reviews for Google Business<\/strong> shows your Google Business reviews in a modern carousel (Swiper), a floating badge, and a side panel. Ideal for building trust and social proof on your site.<\/p>\n\n<h4>Internationalization<\/h4>\n\n<ul>\n<li>All translatable strings in the plugin use <strong>English (United States, <code>en_US<\/code>)<\/strong> as the message source, as required for community translation on WordPress.org.<\/li>\n<li>On a site whose locale is <code>en_US<\/code>, WordPress typically uses those strings <strong>as-is<\/strong> from the plugin (no separate English file required).<\/li>\n<li>Spanish (<code>es_ES<\/code>) and French (<code>fr_FR<\/code>) translation files are included under <code>languages\/<\/code>. Other locales can use language packs from wordpress.org when available, or custom <code>.mo<\/code> \/ <code>.l10n.php<\/code> files.<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Carousel<\/strong> \u2013 Shortcode <code>[etn_egr_reviews_carousel]<\/code> with configurable columns, autoplay, arrows, dots<\/li>\n<li><strong>Floating badge<\/strong> \u2013 Shows rating and total reviews; click to open the side panel<\/li>\n<li><strong>Side panel<\/strong> \u2013 List of reviews in a slide-out panel (position and styles configurable)<\/li>\n<li><strong>Manual reviews<\/strong> \u2013 Add and manage your own reviews in the admin (same structure as Google)<\/li>\n<li><strong>CSV\/Excel import<\/strong> \u2013 Bulk import from <code>.csv<\/code> or <code>.xlsx<\/code> with a header row such as <strong>Author, Text, Stars, Date, Photo URL<\/strong> (minimum: Author, Stars). Text is optional, including in headerless files. Spanish column names (e.g. Autor, Texto) are also recognized for compatibility.<\/li>\n<li><strong>Google API sync<\/strong> \u2013 One-click sync with Google Places API (API Key + Place ID); optional daily cron<\/li>\n<li><strong>Order<\/strong> \u2013 Sort by newest, oldest, best\/worst rating, or drag-and-drop manual order in the admin list<\/li>\n<li><strong>Customizable<\/strong> \u2013 Colors, excerpt length, min stars, \u201cRead more\u201d modal, Rich Snippets (JSON-LD)<\/li>\n<li><strong>Translations<\/strong> \u2013 Text domain: <code>etchenet-reviews-for-google-business<\/code>; see <em>Internationalization<\/em> above<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.0+<\/li>\n<li>PHP 7.4+<\/li>\n<li>Google API Key and Place ID (for syncing from Google); optional for manual-only use<\/li>\n<\/ul>\n\n<h4>How reviews are loaded from the Google API<\/h4>\n\n<p>The plugin uses the <strong>Google Places API (Place Details)<\/strong>. It requests the <code>reviews<\/code> field for your place (using your API Key and Place ID). Google returns a <strong>limited number of reviews per request<\/strong> (typically 5) and does not support pagination for reviews.<\/p>\n\n<p>On each sync, the plugin fetches the current batch from Google, compares it with the reviews already stored on your site, <strong>adds only new ones<\/strong> (no duplicates), and <strong>merges<\/strong> them with the existing list. It <strong>never deletes<\/strong> previously saved Google reviews. The API response is cached for 12 hours to avoid excessive requests.<\/p>\n\n<h4>How to get more reviews than Google's default limit<\/h4>\n\n<p>Because the API returns only a small set per call (usually 5) and has no pagination:<\/p>\n\n<ul>\n<li><strong>Sync regularly.<\/strong> Use <strong>Sync now<\/strong> in the Connectivity tab from time to time, or enable <strong>Enable daily automatic sync (WP-Cron)<\/strong>. Each sync can add new reviews; the plugin keeps all it has ever received and only appends new ones. Over time your total count can grow beyond 5.<\/li>\n<li><strong>Use manual reviews and import.<\/strong> Add reviews manually or import CSV\/Excel for an immediate larger set; they are not limited by the API and are shown together with Google reviews.<\/li>\n<\/ul>\n\n<p>For full details, check the plugin settings and this readme file.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Google services to fetch and display Google Business reviews.<\/p>\n\n<ol>\n<li>Google Places API (maps.googleapis.com)<\/li>\n<\/ol>\n\n<p>- Purpose: fetch place details and public reviews (rating, review count, business name, review entries).\n- Data sent: configured <code>place_id<\/code>, configured API key, requested review language (two-letter code derived from the site\u2019s WordPress <code>get_locale()<\/code>, e.g. <code>en<\/code> for <code>en_US<\/code>, <code>es<\/code> for <code>es_ES<\/code>), optional <code>reviews_sort<\/code> parameter.\n- When sent: on manual sync and on optional daily WP-Cron sync. Two requests are made per sync (one sorted by relevance, one by newest) to maximize review collection within Google's 5-review-per-request limit.<\/p>\n\n<ol>\n<li>Remote profile-photo download (Google-hosted image URLs)<\/li>\n<\/ol>\n\n<p>- Purpose: cache public reviewer profile images locally for faster\/stable display.\n- Data sent: HTTP GET request to the profile photo URL returned by Google for each review.\n- When sent: during synchronization, when new reviews are detected and include a profile photo URL.<\/p>\n\n<p>No personal data from your site visitors is sent by these requests.<\/p>\n\n<p>Google Maps Platform Terms of Service:\nhttps:\/\/mapsplatform.google.com\/terms\/<\/p>\n\n<p>Google Privacy Policy:\nhttps:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install via <strong>Plugins \u2192 Add New<\/strong> and upload the zip.<\/li>\n<li>Activate <strong>Etchenet Reviews for Google Business<\/strong> in the Plugins screen.<\/li>\n<li>Go to <strong>Etchenet Reviews<\/strong> in the admin menu.<\/li>\n<li>Enter your <strong>Google API Key<\/strong> and <strong>Place ID<\/strong> (or use only manual reviews and\/or CSV\/Excel import).<\/li>\n<li>Click <strong>Sync now<\/strong> (Connectivity tab) to fetch reviews, or add manual reviews \/ import from file.<\/li>\n<li>Insert the shortcode <code>[etn_egr_reviews_carousel]<\/code> in any page or post where you want the carousel.<\/li>\n<li>Optionally enable the <strong>floating badge<\/strong> and adjust layout, filters, and styles on the same settings page.<\/li>\n<\/ol>\n\n<h4>Optional: Translations<\/h4>\n\n<p>The plugin ships with Spanish and French translation files in <code>languages\/<\/code>. No extra plugin is required for those languages to work when the site locale matches.<\/p>\n\n<ul>\n<li>To add or improve translations: use <a href=\"https:\/\/wordpress.org\/plugins\/loco-translate\/\">Loco Translate<\/a> or <a href=\"https:\/\/poedit.net\/\">Poedit<\/a> with the template <code>languages\/etchenet-reviews-for-google-business.pot<\/code>.<\/li>\n<li>Place <code>.po<\/code>\/<code>.mo<\/code> files in <code>wp-content\/plugins\/etchenet-reviews-for-google-business\/languages\/<\/code> or in <code>wp-content\/languages\/plugins\/<\/code> (e.g. <code>etchenet-reviews-for-google-business-es_ES.mo<\/code>, <code>etchenet-reviews-for-google-business-fr_FR.mo<\/code>).<\/li>\n<\/ul>\n\n<h4>If you use Loco Translate (or pass the plugin to someone who does)<\/h4>\n\n<ol>\n<li>Install and activate <strong>Loco Translate<\/strong> in WordPress.<\/li>\n<li>Go to <strong>Loco Translate \u2192 Plugins<\/strong> and open <strong>Etchenet Reviews for Google Business<\/strong>.<\/li>\n<li>You will see the translation set <strong>etchenet-reviews-for-google-business<\/strong>.<\/li>\n<li>Choose the language (e.g. Fran\u00e7ais, Espa\u00f1ol, English) and edit\/save. Loco will save into the plugin\u2019s <code>languages\/<\/code> folder by default, so translations travel with the plugin.<\/li>\n<li>Use only files whose names start with <strong>etchenet-reviews-for-google-business-<\/strong> (e.g. <code>etchenet-reviews-for-google-business-fr_FR.po<\/code>).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20google%20api%20key%3F\"><h3>Do I need a Google API Key?<\/h3><\/dt>\n<dd><p>You need an API Key and Place ID only if you want to sync reviews from Google. You can use the plugin with manual reviews and\/or CSV\/Excel import only.<\/p><\/dd>\n<dt id=\"the%20carousel%20shows%20a%20%E2%80%9Cno%20data%E2%80%9D%20message\"><h3>The carousel shows a \u201cno data\u201d message<\/h3><\/dt>\n<dd><p>If you see a message like <em>No data to show. Sync from the admin or add manual reviews\u2026<\/em>, check that you have either synced from Google or added manual reviews (or imported). Also check <strong>Filters &amp; content<\/strong> in settings: minimum stars and \u201cexclude reviews without text\u201d can hide every review.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20order%20of%20reviews%3F\"><h3>Can I change the order of reviews?<\/h3><\/dt>\n<dd><p>Yes. In <strong>Etchenet Reviews<\/strong> go to <strong>Reviews<\/strong>, click <strong>Reorder reviews<\/strong>, drag rows by the handle (\u22ee\u22ee), and click <strong>Save current order<\/strong>. The complete Google and manual-review inventory is shown in this dedicated mode. The saved sequence is used when <strong>Manual order<\/strong> is selected under <strong>Filters &amp; content<\/strong>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>7.0.9<\/h4>\n\n<ul>\n<li>Side-panel close-button hover colors now apply only during a real pointer hover; automatic focus on panel opening keeps the configured normal colors.<\/li>\n<li>Keyboard focus retains an independent <code>:focus-visible<\/code> accessibility outline without reusing the hover background, icon, or border colors.<\/li>\n<\/ul>\n\n<h4>7.0.8<\/h4>\n\n<ul>\n<li>Carousel card background and border settings now remain authoritative when a theme applies competing important shorthands to the shared card class.<\/li>\n<li>Carousel-card, side-panel, and side-panel-card shadow presets now control their complete preset state, including activation, when resolved on the frontend.<\/li>\n<\/ul>\n\n<h4>7.0.7<\/h4>\n\n<ul>\n<li>Side-panel Read-more styling now uses explicit, component-scoped background, border, radius, and logical padding properties so every saved panel setting is applied independently of carousel, theme, and Elementor links.<\/li>\n<li>Hover border width continues to inherit the normal panel border width when its optional setting is left empty; keyboard focus keeps its independent accessibility outline.<\/li>\n<\/ul>\n\n<h4>7.0.6<\/h4>\n\n<ul>\n<li>Side-panel Read-more borders: hover now uses the configured border color and an optional hover-only width that inherits the normal width when left empty.<\/li>\n<li>Accessibility: removed the mouse-hover <code>currentColor<\/code> outline from the side-panel Read-more link; an independent outline is reserved for <code>:focus-visible<\/code> keyboard navigation.<\/li>\n<\/ul>\n\n<h4>7.0.5<\/h4>\n\n<ul>\n<li>Read-more borders: hover now uses the configured border color and an optional hover-only width that inherits the normal width when left empty.<\/li>\n<li>Accessibility: removed the mouse-hover <code>currentColor<\/code> outline from the carousel read-more link; an independent outline is now reserved for <code>:focus-visible<\/code> keyboard navigation.<\/li>\n<\/ul>\n\n<h4>7.0.4<\/h4>\n\n<ul>\n<li>Carousel actions: deployed the saved read-more spacing value to the public stylesheet and retained strict component scoping for the slider link.<\/li>\n<li>Responsive safety: cards preserve their selected aspect ratio while content fits, then expand only when large translated or administrator-styled header\/footer controls would otherwise be clipped.<\/li>\n<li>Read-more sizing: padding and borders now stay inside the card content width, with centered wrapping for deliberately large values on narrow screens.<\/li>\n<li>French translation: aligned the public read-more action with the established \u201cLire la suite\u201d terminology; Spanish remains \u201cLeer m\u00e1s\u201d.<\/li>\n<\/ul>\n\n<h4>7.0.3<\/h4>\n\n<ul>\n<li>Carousel container: added separately saved inner and outer spacing controls for top, right, bottom, and left, with an accessible linked\/unlinked editing mode.<\/li>\n<li>Rendering: the frontend and live preview now use scoped carousel-container spacing variables, responsive effective horizontal values, and protected internal navigation clearance so margins and padding cannot overflow their shortcode parent or clip arrows, pagination, or card shadows.<\/li>\n<li>Fix: the carousel \"Read more\" spacing setting now applies to the public component; live-preview badge and side-panel card radii now use the same 0\u201380 px bounds as saved frontend values; modal padding and maximum width now honour the full ranges accepted by the settings screen.<\/li>\n<li>Upgrade: existing configurations receive zero-valued spacing keys automatically without overwriting any saved carousel settings.<\/li>\n<\/ul>\n\n<h4>7.0.2<\/h4>\n\n<ul>\n<li>Reviews administration: restored one complete inventory for stored Google and manual reviews. Hidden reviews remain manageable in the administration screen and are not removed from storage.<\/li>\n<li>Review management: added search, source\/rating\/status filters, total counters, page sizes (10, 20, 50, 100, or all), and accessible pagination.<\/li>\n<li>Manual order: restored a dedicated unpaginated <strong>Reorder reviews<\/strong> mode with a global drag-and-drop list covering both Google and manual reviews. Saving validates a complete unique sequence before it is stored and selects Manual order for public components.<\/li>\n<li>Data integrity: added an idempotent upgrade migration that retains legacy 6.x order keys and completes the saved sequence with stored reviews. Deleting a manual review now removes only its obsolete order key.<\/li>\n<li>Review status: restored the visible\/hidden control for both review sources. CSV export now includes all stored reviews, including hidden ones.<\/li>\n<li>Carousel container: added an independent 0\u2013200 px container-radius setting with a live preview. It applies only to the carousel container and does not clip its arrows, pagination, or shadows.<\/li>\n<\/ul>\n\n<h4>7.0.1<\/h4>\n\n<ul>\n<li>Floating badge states: separated normal, hover, and keyboard-focus border colors, widths, and styles. Hover and keyboard-focus widths or styles can inherit the normal badge border when left empty.<\/li>\n<li>Accessibility: removed the non-configurable <code>currentColor<\/code> outline from the badge container and from mouse-focus states. Keyboard focus now uses configurable <code>:focus-visible<\/code> outlines only on the actual badge and write-review controls.<\/li>\n<li>Preview: the real-time administration preview now mirrors the frontend badge border and keyboard-focus logic, including hover borders when the normal border width is zero.<\/li>\n<li>Migration: existing 7.0 settings receive the new focus-state fields automatically without overwriting saved badge, hover, or write-review settings.<\/li>\n<\/ul>\n\n<h4>7.0.0<\/h4>\n\n<ul>\n<li>Major refactor: rebuilt the administration experience around eight task-focused tabs and a shared real-time preview that uses the public component markup.<\/li>\n<li>Settings architecture: slider, floating badge, side panel, review window, and their actions now have component-scoped options so that a setting cannot leak into another component.<\/li>\n<li>Visual system: added component-specific colors with opacity, typography controls, borders, spacing, and independent structured shadows for the badge, panel, review cards, carousel, modal, and supported controls.<\/li>\n<li>Component improvements: refreshed the floating badge, side panel, and full-review modal with isolated layers, accessible close controls, responsive behavior, and styles protected from theme or Elementor resets.<\/li>\n<li>Display controls: added independent slider pagination, native SVG arrows, structured shadows, a configurable Google write-review button, and shared displayed review-count and rating controls for the badge and side panel. A component-scoped Swiper compatibility fix preserves the left\/right direction of previous and next arrows without affecting other sliders.<\/li>\n<li>Critical carousel stability: the slider now uses a private, explicit Swiper runtime with reliable script dependencies, hidden-container recovery, ResizeObserver updates, and no fallback to Elementor or theme Swiper globals.<\/li>\n<li>Card layout: restored a dedicated card-aspect-ratio control (automatic, 16:9, 3:2, 4:3, or custom width \/ height) alongside independent height behaviour (automatic, equal, minimum, or fixed). The ratio applies only to the inner carousel card; Swiper slide widths and the side panel remain unaffected.<\/li>\n<li>Card content: ratio and fixed-height cards keep their header and footer visible while the review text truncates cleanly when space is limited. Existing 6.x ratios and early 7.0 ratio-as-height values migrate automatically without overwriting saved choices.<\/li>\n<li>Preview parity: the administration preview now runs the same real Swiper lifecycle and card markup as the frontend, including pagination and navigation.<\/li>\n<li>Preview usability: the administration preview always inspects one complete review card, independently of the public carousel columns. New Desktop, Tablet, and Mobile controls change only the simulated preview width.<\/li>\n<li>Arrow borders: added separate normal, hover, and keyboard-focus border colors, plus independent border thickness and style controls for this plugin\u2019s carousel arrows.<\/li>\n<li>Floating badge controls: added independent normal, hover, and keyboard-focus border colors, border style, width, and transition. The Google write-review button can now appear to the left, right, or compactly inside the badge with its own visual, hover, and focus controls.<\/li>\n<li>Badge compatibility: configurations from 6.x retain the historic integrated + button when that layout can be identified safely; saved left\/right configurations are preserved unchanged.<\/li>\n<li>Manual reviews: reviews created with an author and stars only remain visible in the carousel, floating badge, and side panel even when the optional empty-text filter is enabled.<\/li>\n<li>Translation safety: upgrades preserve administrator-managed legacy translation files; the settings migration never deletes locale customizations.<\/li>\n<li>Migration: existing configurations are migrated automatically on upgrade. The migration is idempotent, preserves legacy and unknown values, and never overwrites a saved configuration.<\/li>\n<\/ul>\n\n<h4>6.1.7<\/h4>\n\n<ul>\n<li>Display: the configurable review count is now the single source of truth for every public review-count label, including the floating Google badge and both side-panel header layouts.<\/li>\n<li>Admin: the badge and side-panel previews now update together in real time when this value changes.<\/li>\n<li>Data integrity: review filtering, the average rating, review cards, operational admin totals, and structured-data counts continue to use real review data.<\/li>\n<\/ul>\n\n<h4>6.1.6<\/h4>\n\n<ul>\n<li>Full-review modal: added separate color controls for the modal, its close button, and the \u201cRead more\u201d link, including hover and keyboard-focus states.<\/li>\n<li>Display: the modal is now a shared footer component with its own overlay. It opens above the side panel and works when the floating badge is used without a carousel shortcode.<\/li>\n<li>Compatibility: isolated modal and \u201cRead more\u201d styles from theme-level button and link resets, including Hello Elementor.<\/li>\n<li>Security: protected the manual Google-review sync with an administrator capability check and nonce, hardened remote avatar caching, and neutralized spreadsheet formulas in CSV exports.<\/li>\n<li>Import: headerless files can now omit the optional review text (for example: Author, Stars, Date, Photo URL).<\/li>\n<li>Dependencies: updated Swiper to 12.1.2 and replaced the broken alpha color-picker bundle with its readable GPL-2.0-or-later source.<\/li>\n<\/ul>\n\n<h4>6.1.5<\/h4>\n\n<ul>\n<li>Badge: added an optional setting to override only the review count displayed on the floating Google badge; leave it empty to keep the real filtered count.<\/li>\n<li>Manual reviews: author name and a whole-star rating are now the only required fields. Review text and profile image are optional in add, edit, and CSV\/Excel import workflows.<\/li>\n<li>Display: manual reviews without text remain visible in the carousel, badge, and side panel without an empty-text gap; Google empty-text filtering is unchanged.<\/li>\n<\/ul>\n\n<h4>6.1.4<\/h4>\n\n<ul>\n<li>Internationalization: finalized English source strings in the active trunk code for WordPress.org translation workflows<\/li>\n<li>Admin\/UI consistency: aligned remaining visible labels and export headers with the English source baseline<\/li>\n<li>Release prep: version bump and readme metadata updated for the 6.1.4 tag<\/li>\n<\/ul>\n\n<h4>6.1.3<\/h4>\n\n<ul>\n<li>Internationalization: user-facing strings use English (<code>en_US<\/code>) as the translation source (WordPress.org \/ Polyglots guidelines)<\/li>\n<li>Readme: aligned with admin labels; clarified default locale, CSV headers, and Google API <code>language<\/code> parameter<\/li>\n<li>Regenerated translation template and refreshed bundled <code>es_ES<\/code> \/ <code>fr_FR<\/code> \/ <code>en_US<\/code> catalogs<\/li>\n<\/ul>\n\n<h4>6.1.2<\/h4>\n\n<ul>\n<li>Fix: admin color pickers (Esthetica tab) now update the live preview in real time<\/li>\n<li>Fix: card header layout \u2014 author name and stars are centered on the full card width while the avatar stays pinned left<\/li>\n<li>Fix: sidebar panel review cards no longer inherit slider-only CSS (avatar sizing, star alignment)<\/li>\n<\/ul>\n\n<h4>6.1.0<\/h4>\n\n<ul>\n<li>Carousel, badge, and side panel with manual reviews and Google API sync<\/li>\n<li>CSV\/Excel import; drag-and-drop order; translation-ready (EN, ES, FR)<\/li>\n<li>Rich Snippets (JSON-LD), configurable styles and filters<\/li>\n<\/ul>","raw_excerpt":"Display Google Business reviews in a carousel, floating badge, and side panel, with manual reviews, imports, and API sync.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/284612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=284612"}],"author":[{"embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/etchenet"}],"wp:attachment":[{"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=284612"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=284612"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=284612"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=284612"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=284612"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=284612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}