{"id":358255,"date":"2026-08-26T11:53:14","date_gmt":"2026-08-26T11:53:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/softlinkster-google-reviews\/"},"modified":"2026-08-29T02:15:03","modified_gmt":"2026-08-29T02:15:03","slug":"softlinkster-reviews-for-google","status":"publish","type":"plugin","link":"https:\/\/br.wordpress.org\/plugins\/softlinkster-reviews-for-google\/","author":13796907,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.2.0","stable_tag":"0.2.0","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Softlinkster Reviews for Google","header_author":"Khurram Shehzad","header_description":"Display Google Places reviews in WordPress with a shortcode, daily sync, and theme-overridable templates.","assets_banners_color":"011136","last_updated":"2026-08-29 02:15:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/mrkhuran.com\/contact","header_author_uri":"https:\/\/mrkhuran.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":123,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"proudnation47","date":"2026-08-26 11:55:26","revision":3666918},"0.1.1":{"tag":"0.1.1","author":"proudnation47","date":"2026-08-26 17:16:51","revision":3667510},"0.1.2":{"tag":"0.1.2","author":"proudnation47","date":"2026-08-27 04:18:41","revision":3668035},"0.1.3":{"tag":"0.1.3","author":"proudnation47","date":"2026-08-27 04:44:17","revision":3668054},"0.1.4":{"tag":"0.1.4","author":"proudnation47","date":"2026-08-27 04:47:57","revision":3668057},"0.1.5":{"tag":"0.1.5","author":"proudnation47","date":"2026-08-27 05:02:23","revision":3668087},"0.1.6":{"tag":"0.1.6","author":"proudnation47","date":"2026-08-27 05:21:41","revision":3668111},"0.1.7":{"tag":"0.1.7","author":"proudnation47","date":"2026-08-27 05:27:13","revision":3668123},"0.2.0":{"tag":"0.2.0","author":"proudnation47","date":"2026-08-29 02:15:03","revision":3671063}},"upgrade_notice":{"0.2.0":"<p>Adds Business Profile full-review sync, a clearer source-selection admin flow, and safer source-mode switching.<\/p>","0.1.8":"<p>Adds fuller carousel controls, safe wrapper-class overrides, and clearer guidance about the Google Places 5-review limit.<\/p>","0.1.1":"<p>Improves the wp-admin curation experience and makes sync and Google API errors clearer.<\/p>","0.1.0":"<p>Initial release of Softlinkster Reviews for Google.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3668126,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3668126,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3666897,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3666897,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0","0.1.1","0.1.2","0.1.3","0.1.4","0.1.5","0.1.6","0.1.7","0.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3666897,"resolution":"1","location":"assets","locale":"","width":1600,"height":1400},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3666897,"resolution":"2","location":"assets","locale":"","width":1585,"height":2229},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3666897,"resolution":"3","location":"assets","locale":"","width":1585,"height":2226},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3666897,"resolution":"4","location":"assets","locale":"","width":1585,"height":1466},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3666897,"resolution":"5","location":"assets","locale":"","width":1585,"height":2191},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3666897,"resolution":"6","location":"assets","locale":"","width":1600,"height":1400}},"screenshots":{"1":"Saved Views screen for managing reusable Google review shortcodes","2":"View Editor screen for display options and live frontend preview","3":"Style tab for layout, typography, and color customization","4":"Global Settings screen for Google Places connection, sync, and business lookup","5":"Configured settings state with saved location and cached review curation controls","6":"Frontend page example showing the neutral default review layout on a live page"}},"plugin_section":[],"plugin_tags":[21827,245569,191069,80,5103],"plugin_category":[43],"plugin_contributors":[259068,259069],"plugin_business_model":[],"class_list":["post-358255","plugin","type-plugin","status-publish","hentry","plugin_tags-google-reviews","plugin_tags-places-api","plugin_tags-reviews-widget","plugin_tags-shortcode","plugin_tags-testimonial-slider","plugin_category-customization","plugin_contributors-khurramshehzad","plugin_contributors-proudnation47","plugin_committers-proudnation47"],"banners":{"banner":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/banner-772x250.png?rev=3666897","banner_2x":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/banner-1544x500.png?rev=3666897","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/icon-128x128.png?rev=3668126","icon_2x":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/icon-256x256.png?rev=3668126","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/screenshot-1.png?rev=3666897","caption":"Saved Views screen for managing reusable Google review shortcodes"},{"src":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/screenshot-2.png?rev=3666897","caption":"View Editor screen for display options and live frontend preview"},{"src":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/screenshot-3.png?rev=3666897","caption":"Style tab for layout, typography, and color customization"},{"src":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/screenshot-4.png?rev=3666897","caption":"Global Settings screen for Google Places connection, sync, and business lookup"},{"src":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/screenshot-5.png?rev=3666897","caption":"Configured settings state with saved location and cached review curation controls"},{"src":"https:\/\/ps.w.org\/softlinkster-reviews-for-google\/assets\/screenshot-6.png?rev=3666897","caption":"Frontend page example showing the neutral default review layout on a live page"}],"raw_content":"<!--section=description-->\n<p>Softlinkster Reviews for Google helps you display Google business reviews in WordPress without being locked into a single layout. Create reusable saved views, style each one separately, and place them anywhere with a shortcode.<\/p>\n\n<p>If you want a Google reviews plugin for WordPress that can handle homepage sections, testimonial grids, review sliders, carousel layouts, or marquee-style moving rows, this plugin is built for that workflow.<\/p>\n\n<p><strong>What Softlinkster Reviews for Google does:<\/strong><\/p>\n\n<h4>Reusable Google review views<\/h4>\n\n<p>Create multiple saved views and give each one its own shortcode. One view can be a homepage review slider, another can be a grid for a services page, and another can be a compact testimonial section for a landing page.<\/p>\n\n<h4>Flexible layout options<\/h4>\n\n<p>Choose from stacked cards, grid, compact, carousel, and marquee layouts. Each saved view keeps its own display and style settings, so different pages can show Google reviews differently without editing code.<\/p>\n\n<h4>Live preview in wp-admin<\/h4>\n\n<p>Preview layout and styling changes inside the plugin before saving. This makes it easier to tune card spacing, typography, colors, visibility options, and motion-based layouts from one screen.<\/p>\n\n<h4>Google Places business finder<\/h4>\n\n<p>Search for your business inside wp-admin, save the correct place, and reuse that saved location across views instead of copying Place IDs manually every time.<\/p>\n\n<h4>Local review curation<\/h4>\n\n<p>Hide reviews, feature important ones, and adjust internal sort weight for cached review items. This helps you shape the order of visible reviews without changing the original Google review content.<\/p>\n\n<h4>Timed review cache with scheduled sync<\/h4>\n\n<p>The plugin fetches Google Places review content, stores it in a time-limited local cache, and refreshes it on a daily schedule or on demand. This keeps the plugin aligned with Google Places caching limits instead of promising permanent review storage.<\/p>\n\n<h4>Two source modes for different needs<\/h4>\n\n<p>Choose <code>Places API<\/code> for the fastest setup when a public 5-review sample is enough, or switch to <code>Business Profile<\/code> when you own or manage the listing and need the full review library that Google exposes through Business Profile APIs.<\/p>\n\n<h4>Theme override support<\/h4>\n\n<p>The plugin ships with one neutral default template. Developers can override that output from the active theme when they want a custom frontend design.<\/p>\n\n<p>To keep the plugin WordPress.org-safe, it does <strong>not<\/strong> ship with any API key. Each site owner must provide their own Google Places API key and business location data.<\/p>\n\n<p>Admin menu:<\/p>\n\n<ul>\n<li><code>Google Reviews &gt; Views<\/code><\/li>\n<li><code>Google Reviews &gt; Settings<\/code><\/li>\n<\/ul>\n\n<p>Optional constant overrides:<\/p>\n\n<pre><code>define( 'SOFTLINKSTER_GOOGLE_REVIEWS_GOOGLE_API_KEY', 'your-api-key-here' );\n\ndefine( 'SOFTLINKSTER_GOOGLE_REVIEWS_GOOGLE_PLACE_ID', 'your-place-id-here' );\n<\/code><\/pre>\n\n<p>The plugin uses a neutral default template. Themes can override it by adding either of these files:<\/p>\n\n<ul>\n<li><code>wp-content\/themes\/your-theme\/softlinkster-reviews-for-google\/reviews.php<\/code><\/li>\n<li><code>wp-content\/themes\/your-theme\/softlinkster-reviews-for-google\/reviews\/default.php<\/code><\/li>\n<\/ul>\n\n<p>Primary shortcode:<\/p>\n\n<pre><code>[softlinkster_google_reviews]\n<\/code><\/pre>\n\n<p>Saved view example:<\/p>\n\n<pre><code>[softlinkster_google_reviews view=\"homepage-slider\"]\n<\/code><\/pre>\n\n<p>Supported shortcode attributes:<\/p>\n\n<ul>\n<li><code>view<\/code> - load a saved view by ID<\/li>\n<li><code>limit<\/code> - maximum number of reviews to show<\/li>\n<li><code>min_rating<\/code> - minimum rating to include<\/li>\n<li><code>sort<\/code> - one of <code>newest<\/code>, <code>oldest<\/code>, <code>rating_desc<\/code>, or <code>rating_asc<\/code><\/li>\n<li><code>location<\/code> - render a saved location ID<\/li>\n<li><code>place_id<\/code> - render a specific place ID<\/li>\n<li><code>layout<\/code> - one of <code>stacked<\/code>, <code>grid<\/code>, <code>compact<\/code>, <code>carousel<\/code>, or <code>marquee<\/code><\/li>\n<\/ul>\n\n<p>Example:<\/p>\n\n<pre><code>[softlinkster_google_reviews view=\"homepage-slider\" limit=\"6\" min_rating=\"4\" sort=\"rating_desc\"]\n<\/code><\/pre>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Google APIs provided by Google LLC.<\/p>\n\n<p>It contacts the service when:<\/p>\n\n<ul>\n<li>an administrator searches for a business in <code>Google Reviews &gt; Settings<\/code><\/li>\n<li>the scheduled daily WP-Cron sync runs<\/li>\n<li>an administrator runs a manual sync from the plugin settings or view editor<\/li>\n<li>the shortcode renders while the plugin is in Places API mode and the local cache is empty<\/li>\n<li>an administrator connects Google Business Profile with OAuth and selects a managed account or location<\/li>\n<\/ul>\n\n<p>It sends:<\/p>\n\n<ul>\n<li>the business search text entered by the administrator when the business finder is used<\/li>\n<li>the configured Google Place ID in the request URL path<\/li>\n<li>your Google Places API key in the <code>X-Goog-Api-Key<\/code> request header<\/li>\n<li>the field mask <code>id,displayName,googleMapsUri,reviews<\/code> when fetching reviews<\/li>\n<li>the field mask <code>places.id,places.displayName,places.formattedAddress,places.googleMapsUri<\/code> when searching for businesses<\/li>\n<li>a Google OAuth authorization request for the <code>business.manage<\/code> scope when Business Profile mode is connected<\/li>\n<li>the selected Business Profile account and location resource names when loading managed locations and reviews<\/li>\n<li>the stored OAuth access token in the <code>Authorization: Bearer<\/code> header for Google Business Profile requests<\/li>\n<\/ul>\n\n<p>It receives:<\/p>\n\n<ul>\n<li>place IDs<\/li>\n<li>place display data<\/li>\n<li>place names<\/li>\n<li>formatted business addresses<\/li>\n<li>review text<\/li>\n<li>reviewer attribution<\/li>\n<li>rating values<\/li>\n<li>review publish times<\/li>\n<li>Google Maps review URLs<\/li>\n<li>Business Profile account names<\/li>\n<li>Business Profile location resource names<\/li>\n<li>Business Profile location metadata including place IDs and Maps URIs<\/li>\n<\/ul>\n\n<p>Google Maps Platform Terms of Service:\nhttps:\/\/cloud.google.com\/maps-platform\/terms<\/p>\n\n<p>Google Places API policies and attribution requirements:\nhttps:\/\/developers.google.com\/maps\/documentation\/places\/web-service\/policies<\/p>\n\n<p>Google Business Profile API information:\nhttps:\/\/developers.google.com\/my-business\/<\/p>\n\n<p>Google Privacy Policy:\nhttps:\/\/policies.google.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>softlinkster-reviews-for-google<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress<\/li>\n<li>Open <code>Google Reviews &gt; Settings<\/code><\/li>\n<li>Choose <code>Places API<\/code> or <code>Business Profile<\/code> in <code>Google Reviews &gt; Settings<\/code><\/li>\n<li>For <code>Places API<\/code>, add your own Google Places API key, search for your business, and save at least one location, or define the API key and place ID in <code>wp-config.php<\/code><\/li>\n<li>For <code>Business Profile<\/code>, add your approved Google OAuth client credentials, connect Google Business Profile, select the account and location, and save<\/li>\n<li>Open <code>Google Reviews &gt; Views<\/code>, create a saved view if needed, and copy its shortcode<\/li>\n<li>Insert <code>[softlinkster_google_reviews]<\/code> or a saved-view shortcode into any post, page, or widget area<\/li>\n<li>Run a manual sync if you want to populate the local cache immediately<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20include%20an%20api%20key%3F\"><h3>Does this plugin include an API key?<\/h3><\/dt>\n<dd><p>No. The plugin never ships with an API key. Every site owner must provide their own key.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20have%20a%20settings%20screen%3F\"><h3>Does this plugin have a settings screen?<\/h3><\/dt>\n<dd><p>Yes. The plugin includes <code>Google Reviews &gt; Settings<\/code> for API connection, locations, sync, and review curation, plus <code>Google Reviews &gt; Views<\/code> for reusable saved displays. Constants in <code>wp-config.php<\/code> still override the dashboard values.<\/p><\/dd>\n<dt id=\"is%20the%20api%20key%20exposed%20to%20the%20frontend%3F\"><h3>Is the API key exposed to the frontend?<\/h3><\/dt>\n<dd><p>No. The key is used only on the server for backend requests to Google Places. The dashboard does not print the saved key back into the page after it is stored.<\/p><\/dd>\n<dt id=\"can%20i%20create%20different%20layouts%20for%20different%20pages%3F\"><h3>Can I create different layouts for different pages?<\/h3><\/dt>\n<dd><p>Yes. Each saved view has its own shortcode and its own display\/style settings. You can create one view for a homepage slider, another for a grid, and another for a marquee without editing theme files.<\/p><\/dd>\n<dt id=\"how%20are%20duplicate%20reviews%20avoided%3F\"><h3>How are duplicate reviews avoided?<\/h3><\/dt>\n<dd><p>The plugin upserts rows by <code>source<\/code> plus <code>source_review_id<\/code>, so repeated syncs do not create duplicate records for the same fetched review.<\/p><\/dd>\n<dt id=\"why%20do%20i%20still%20only%20see%205%20google%20reviews%20after%20sync%3F\"><h3>Why do I still only see 5 Google reviews after sync?<\/h3><\/dt>\n<dd><p>Because the Google Places API currently returns a maximum of 5 reviews per place, sorted by relevance. The plugin refreshes that limited feed every day and can only accumulate additional cached reviews if Google later rotates different reviews into that returned set.<\/p><\/dd>\n<dt id=\"how%20can%20i%20sync%20more%20than%205%20reviews%3F\"><h3>How can I sync more than 5 reviews?<\/h3><\/dt>\n<dd><p>Switch the plugin to <code>Business Profile<\/code> mode and connect a listing that you own or manage. Google Business Profile APIs support paginated review retrieval for managed locations, unlike the Places API public place feed.<\/p><\/dd>\n<dt id=\"why%20does%20the%20plugin%20use%20a%20time-limited%20cache%20instead%20of%20promising%20permanent%20storage%3F\"><h3>Why does the plugin use a time-limited cache instead of promising permanent storage?<\/h3><\/dt>\n<dd><p>Google Places review content is subject to Google Maps Platform usage restrictions. This plugin therefore treats review content as cache content, lets you configure a cache lifetime up to 29 days, and refreshes it instead of claiming permanent archival storage.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20contact%20google%20automatically%3F\"><h3>Does the plugin contact Google automatically?<\/h3><\/dt>\n<dd><p>Only for documented plugin features. It contacts Google when you search for a business in wp-admin, when the scheduled or manual sync runs, and when the shortcode renders while the local cache is empty.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20support%3F\"><h3>Where can I get support?<\/h3><\/dt>\n<dd><p>Use <a href=\"https:\/\/mrkhuran.com\/contact\">https:\/\/mrkhuran.com\/contact<\/a> for support. Once the plugin page is live on WordPress.org, you can also use the support forum there.<\/p><\/dd>\n<dt id=\"where%20is%20the%20human-readable%20source%20code%3F\"><h3>Where is the human-readable source code?<\/h3><\/dt>\n<dd><p>The release plugin includes readable PHP, CSS, JS, and template files directly in the package. It does not rely on obfuscated code or hidden remote assets to render the review output.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added a review source switcher with both Places API and Business Profile modes<\/li>\n<li>Added a new OAuth-based admin flow for connecting managed Google Business Profile listings<\/li>\n<li>Added full-review sync support for Business Profile managed locations<\/li>\n<li>Improved the global settings UI so source selection and connection steps are clearer<\/li>\n<li>Hardened source switching so generated Business Profile locations do not leak into Places mode<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Added saved-view controls for carousel drag and slide transition speed<\/li>\n<li>Added safe extra wrapper CSS class support for theme-side styling overrides<\/li>\n<li>Fixed frontend script loading for Read more \/ Show less outside carousel layouts<\/li>\n<li>Clarified the Google Places 5-review response limit inside the plugin guidance and readme<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Refined the review curation layout into a cleaner, more compact moderation interface<\/li>\n<li>Fixed stale sync warnings so successful syncs no longer show old configuration errors<\/li>\n<li>Improved Google Places API error messages to avoid dumping raw JSON into wp-admin<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Added Google Places API client and business finder<\/li>\n<li>Added custom review cache tables<\/li>\n<li>Added daily cron sync and manual sync<\/li>\n<li>Added reusable saved views with shortcode copying<\/li>\n<li>Added live preview, neutral template overrides, and review curation<\/li>\n<li>Added uninstall cleanup and external service disclosure<\/li>\n<\/ul>","raw_excerpt":"Show Google reviews in WordPress with saved view shortcodes, live preview, flexible layouts, and either Google Places or Google Business Profile sync.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=358255"}],"author":[{"embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/proudnation47"}],"wp:attachment":[{"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358255"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358255"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358255"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358255"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358255"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/br.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}