{"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-27T05:27:13","modified_gmt":"2026-08-27T05:27:13","slug":"softlinkster-reviews-for-google","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/softlinkster-reviews-for-google\/","author":13796907,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.7","stable_tag":"0.1.7","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-27 05:27:13","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":100,"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}},"upgrade_notice":{"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"],"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>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 the Google Places API (New) 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 and the local cache is empty<\/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<\/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<\/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 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>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>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%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.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 timed cache sync.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=358255"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/proudnation47"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358255"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358255"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358255"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358255"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358255"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}