{"id":357427,"date":"2026-08-25T17:46:18","date_gmt":"2026-08-25T17:46:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/review-numbers\/"},"modified":"2026-08-25T17:45:56","modified_gmt":"2026-08-25T17:45:56","slug":"bpers-review-count-and-rating","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bpers-review-count-and-rating\/","author":23544327,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Bpers Review Count and Rating","header_author":"Shahzaib Hassan","header_description":"Manage the star rating and review count you display across your site from one place. Works with any review platform, manually or with optional automatic syncing.","assets_banners_color":"b19ec3","last_updated":"2026-08-25 17:45:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/github.com\/shahzaib-hassan-dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"shahzaibhassan","date":"2026-08-25 17:45:56"}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3665798,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3665798,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3665798,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3665798,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"bpers-review-count-and-rating\/figures":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"bpers-review-count-and-rating\/figures","version":"1.0.0","title":"Bpers Review Count and Rating","category":"widgets","icon":"star-filled","description":"Show a star rating, review count or review badge from one of your review sources.","keywords":["review","rating","stars","testimonial"],"textdomain":"bpers-review-count-and-rating","supports":{"html":false,"align":["left","center","right"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true},"color":{"text":true,"background":false}},"attributes":{"display":{"type":"string","default":"badge"},"source":{"type":"string","default":""},"showStars":{"type":"boolean","default":true},"showCount":{"type":"boolean","default":true},"showLabel":{"type":"boolean","default":true},"link":{"type":"boolean","default":true},"step":{"type":"number","default":10},"suffix":{"type":"string","default":"+"}},"editorScript":"bpers-review-count-and-rating-block-editor","style":"bpers-review-count-and-rating"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Every review source on one screen, folded down, with the combined rating and total across the top.","2":"A source opened for editing. Type the figures in, or connect the platform and let them arrive on their own.","3":"A fetched figure held back for a decision because the review count dropped, instead of quietly replacing a real number with a wrong one.","4":"Display and sync: which source the shortcodes fall back to, how the figures are protected, and when to be emailed.","5":"Every shortcode with its live output, a copy button, and a picker for which source to preview.","6":"What a visitor sees. Part filled stars are drawn to the real score, and a ten point platform stays out of ten."}},"plugin_section":[],"plugin_tags":[21827,2295,268432,1519,2293],"plugin_category":[53],"plugin_contributors":[276581],"plugin_business_model":[],"class_list":["post-357427","plugin","type-plugin","status-publish","hentry","plugin_tags-google-reviews","plugin_tags-rating","plugin_tags-review-count","plugin_tags-reviews","plugin_tags-star-rating","plugin_category-ratings-and-reviews","plugin_contributors-shahzaibhassan","plugin_committers-shahzaibhassan"],"banners":{"banner":"https:\/\/ps.w.org\/bpers-review-count-and-rating\/assets\/banner-772x250.png?rev=3665798","banner_2x":"https:\/\/ps.w.org\/bpers-review-count-and-rating\/assets\/banner-1544x500.png?rev=3665798","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bpers-review-count-and-rating\/assets\/icon-128x128.png?rev=3665798","icon_2x":"https:\/\/ps.w.org\/bpers-review-count-and-rating\/assets\/icon-256x256.png?rev=3665798","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>If your rating and review count are typed into a dozen pages, they are wrong the moment the count changes. Bpers Review Count and Rating gives you one place to set them, and every page that uses a shortcode or the block updates together.<\/p>\n\n<p>It works with any review platform. Add as many sources as you like, one per platform or one per branch, and each keeps its own figures.<\/p>\n\n<p><strong>Typing the figures in is a first class way to use this plugin.<\/strong> Most review platforms publish no free way to read a business score automatically, so a plugin that insists on an API simply cannot support them. Here, entering the numbers by hand is the normal path, and automatic syncing is an option on the platforms that offer it.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li>One screen for every review source on the site.<\/li>\n<li>Shortcodes for the rating, the count, the count rounded down, stars, a full badge, and a link to your review page.<\/li>\n<li>A block for the block editor, and a widget for Elementor.<\/li>\n<li>Combined figures: total reviews and a count weighted average rating across every platform at once, correct even when platforms score out of different maximums.<\/li>\n<li>Part filled stars drawn as shapes, so a 4.3 does not round up to five stars and the display does not depend on which emoji font the visitor has.<\/li>\n<li>Optional automatic syncing from Google, once a day, in the background.<\/li>\n<\/ul>\n\n<h4>Built so the numbers stay right<\/h4>\n\n<ul>\n<li><strong>Page caches are cleared when the figures change.<\/strong> Without that, a site behind a caching plugin keeps serving yesterday's numbers and looks broken.<\/li>\n<li><strong>A bad fetch cannot wipe your numbers.<\/strong> If a sync comes back with a lower review count or a rating that jumped, the figure is held for you to approve rather than published.<\/li>\n<li><strong>Nothing goes stale in silence.<\/strong> If a source stops syncing, its fetched figures are dropped after a window you choose and the figures you typed take over. Site Health reports how long each source has gone without a sync.<\/li>\n<li><strong>The front end never makes an HTTP request.<\/strong> Figures are read from a single small autoloaded option. Syncing happens on a schedule, never during a page load.<\/li>\n<li><strong>Your API key is not autoloaded.<\/strong> Credentials live in an option that is only read in the admin and on cron, never on a front end request.<\/li>\n<\/ul>\n\n<h4>Shortcodes<\/h4>\n\n<p>Add <code>source=\"key\"<\/code> to any of these to name a source. Without it, the default source is used.<\/p>\n\n<ul>\n<li><code>[rvnum_rating]<\/code> the rating on its own<\/li>\n<li><code>[rvnum_count]<\/code> the exact review count<\/li>\n<li><code>[rvnum_count_rounded step=\"25\"]<\/code> the count rounded down, never up<\/li>\n<li><code>[rvnum_stars]<\/code> stars, including part filled ones<\/li>\n<li><code>[rvnum_badge]<\/code> name, rating, stars and count together<\/li>\n<li><code>[rvnum_link text=\"Read our reviews\"]<\/code> a link to your review page<\/li>\n<li><code>[rvnum_label]<\/code> the platform name<\/li>\n<li><code>[rvnum_total]<\/code> every source added together<\/li>\n<li><code>[rvnum_average]<\/code> every source averaged, weighted by review count<\/li>\n<\/ul>\n\n<h4>WP-CLI<\/h4>\n\n<pre><code>wp rvnum list\nwp rvnum sync\nwp rvnum sync --source=google\nwp rvnum set google --rating=4.9 --count=231\n<\/code><\/pre>\n\n<h3>External services<\/h3>\n\n<p>This plugin makes no external connection unless you configure a source for automatic syncing. With every source left on manual, which is the default, it never contacts anything.<\/p>\n\n<p>If you switch a Google source to automatic, the plugin sends one request a day to the Google Places API at <code>https:\/\/places.googleapis.com\/v1\/places\/{place-id}<\/code>, from your server, on a scheduled task. Each request contains the Place ID and the API key you entered. No visitor data, no personal data and no information about your site's traffic is sent, and no request is ever made during a visitor's page load.<\/p>\n\n<p>The rating and review count returned are stored in your own database so that pages can be rendered without contacting Google, and are deleted once they pass the staleness window you set under Display and sync.<\/p>\n\n<p>Using this feature means agreeing to Google's terms, which govern how their content may be stored and require attribution to be shown alongside it. Read them before switching it on:<\/p>\n\n<ul>\n<li>Google Maps Platform Terms of Service: https:\/\/cloud.google.com\/maps-platform\/terms\/<\/li>\n<li>Google Maps Platform Service Specific Terms: https:\/\/cloud.google.com\/maps-platform\/terms\/maps-service-terms<\/li>\n<li>Google Privacy Policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<p>Google requires a billing card on the Cloud project before it will issue a key, even when usage stays inside the free allowance.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/bpers-review-count-and-rating<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate it.<\/li>\n<li>Open Bpers Review Count and Rating in the sidebar.<\/li>\n<li>Enter your rating and review count, and save.<\/li>\n<li>Put a shortcode or the block wherever the figures should appear.<\/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>No. Typing the figures in is the default and works for every platform. The API key is only needed if you want a Google source to update itself once a day.<\/p><\/dd>\n<dt id=\"which%20platforms%20can%20sync%20automatically%3F\"><h3>Which platforms can sync automatically?<\/h3><\/dt>\n<dd><p>Google, through the Places API. Every other platform in the list is there for figures you enter yourself, because they either publish no public API for a business's own aggregate score or put one behind a paid plan. The plugin says so on screen rather than offering a setting that cannot work.<\/p><\/dd>\n<dt id=\"i%20changed%20the%20number%20but%20the%20page%20still%20shows%20the%20old%20one.\"><h3>I changed the number but the page still shows the old one.<\/h3><\/dt>\n<dd><p>That is a page cache. The plugin clears the caches of the common caching plugins automatically, and you can turn that off under Display and sync. If your cache is somewhere else, such as at your CDN, hook the <code>rvnum_values_changed<\/code> action to clear it.<\/p><\/dd>\n<dt id=\"my%20figures%20stopped%20updating.\"><h3>My figures stopped updating.<\/h3><\/dt>\n<dd><p>Automatic syncing rides on WP-Cron, which only fires when someone visits the site and is disabled outright on some hosts. Check Tools, then Site Health, where this plugin reports how long each source has gone without a sync. On a server where you can schedule commands, <code>wp rvnum sync<\/code> is more reliable.<\/p><\/dd>\n<dt id=\"can%20i%20show%20reviews%20from%20several%20platforms%20added%20together%3F\"><h3>Can I show reviews from several platforms added together?<\/h3><\/dt>\n<dd><p>Yes. <code>[rvnum_total]<\/code> adds up every source's review count, and <code>[rvnum_average]<\/code> averages the ratings weighted by how many reviews each has. Platforms scoring out of ten are converted before averaging.<\/p><\/dd>\n<dt id=\"does%20this%20add%20review%20schema%20for%20search%20results%3F\"><h3>Does this add review schema for search results?<\/h3><\/dt>\n<dd><p>No, deliberately. Google does not show review rich results for a business marking up reviews about itself, and doing it anyway carries a risk of a manual action rather than a benefit. If you want that markup, add it with a dedicated schema plugin and decide knowingly.<\/p><\/dd>\n<dt id=\"can%20i%20add%20a%20platform%20that%20is%20not%20in%20the%20list%3F\"><h3>Can I add a platform that is not in the list?<\/h3><\/dt>\n<dd><p>Yes, two ways. Pick \"Other platform\" and set the name and scale yourself, or write a class against <code>Rvnum_Provider_Interface<\/code> and add it through the <code>rvnum_providers<\/code> filter.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Manage the star rating and review count shown across your site from one place. Any review platform, typed in or synced automatically.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357427","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=357427"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shahzaibhassan"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357427"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357427"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357427"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357427"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357427"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357427"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}