{"id":242470,"date":"2025-08-04T18:21:58","date_gmt":"2025-08-04T18:21:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aboutbuzz-stories-embed\/"},"modified":"2026-05-01T10:22:24","modified_gmt":"2026-05-01T10:22:24","slug":"aboutbuzz-stories-embed","status":"publish","type":"plugin","link":"https:\/\/cn.wordpress.org\/plugins\/aboutbuzz-stories-embed\/","author":23328460,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.2","stable_tag":"2.0.2","tested":"6.8.5","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"AboutBuzz Stories Embed","header_author":"ftpwebdesign.com","header_description":"Embed AboutBuzz video stories using [aboutbuzz_smart_stories brand_id=\"123,456\"] shortcode. Requires activation with a secret code.","assets_banners_color":"a49793","last_updated":"2026-05-01 10:22:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/aboutbuzz.com","header_author_uri":"https:\/\/ftpwebdesign.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":909,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.7.7":{"tag":"1.7.7","author":"ftpwebdesign","date":"2025-08-08 03:51:45"},"1.7.8":{"tag":"1.7.8","author":"ftpwebdesign","date":"2025-09-10 02:56:01"},"1.7.9":{"tag":"1.7.9","author":"ftpwebdesign","date":"2025-09-11 22:59:30"},"1.8.0":{"tag":"1.8.0","author":"ftpwebdesign","date":"2025-09-27 18:22:56"},"1.8.1":{"tag":"1.8.1","author":"ftpwebdesign","date":"2025-09-27 18:33:44"},"1.8.2":{"tag":"1.8.2","author":"ftpwebdesign","date":"2025-10-01 08:00:21"},"1.9.1":{"tag":"1.9.1","author":"ftpwebdesign","date":"2025-12-04 08:24:29"},"1.9.2":{"tag":"1.9.2","author":"ftpwebdesign","date":"2026-01-27 08:09:14"},"1.9.3":{"tag":"1.9.3","author":"ftpwebdesign","date":"2026-01-28 08:00:29"},"2.0.0":{"tag":"2.0.0","author":"ftpwebdesign","date":"2026-04-20 21:25:59"},"2.0.1":{"tag":"2.0.1","author":"ftpwebdesign","date":"2026-04-21 20:52:43"},"2.0.2":{"tag":"2.0.2","author":"ftpwebdesign","date":"2026-05-01 10:22:24"}},"upgrade_notice":{"2.0.2":"<p>Brand refresh + per-review language labels + mobile layout fix.<\/p>","1.9.3":"<p>Fixes first thumbnail not loading on sites with lazy-loading plugins. Recommended for all users.<\/p>","1.7.7":"<p>Major WordPress.org compliance update \u2014 please install for security and UX fixes.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3341318,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3341318,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3341318,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3341318,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.7.7","1.7.8","1.7.9","1.8.0","1.8.1","1.8.2","1.9.1","1.9.2","1.9.3","2.0.0","2.0.1","2.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3520269,"resolution":"1","location":"assets","locale":"","width":2652,"height":1602},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3341333,"resolution":"2","location":"assets","locale":"","width":2562,"height":1602},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3341333,"resolution":"3","location":"assets","locale":"","width":3002,"height":1602},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3341333,"resolution":"4","location":"assets","locale":"","width":2562,"height":1602},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3341333,"resolution":"5","location":"assets","locale":"","width":2562,"height":1602}},"screenshots":{"1":"Plugin installed, reviews visible on the site.","2":"Reviews on mobile in a carousel with play\/pause and like integration.","3":"Settings screen \u2014 AboutBuzz Activation.","4":"Entering your secret key from aboutbuzz.com.","5":"Embedding reviews via shortcode."}},"plugin_section":[],"plugin_tags":[230,1519,10817,1518,222],"plugin_category":[50,53,56],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-242470","plugin","type-plugin","status-publish","hentry","plugin_tags-embed","plugin_tags-reviews","plugin_tags-stories","plugin_tags-testimonials","plugin_tags-video","plugin_category-media","plugin_category-ratings-and-reviews","plugin_category-social-and-sharing","plugin_committers-ftpwebdesign"],"banners":{"banner":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/banner-772x250.png?rev=3341318","banner_2x":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/banner-1544x500.png?rev=3341318","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/icon-128x128.png?rev=3341318","icon_2x":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/icon-256x256.png?rev=3341318","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/screenshot-1.png?rev=3520269","caption":"Plugin installed, reviews visible on the site."},{"src":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/screenshot-2.png?rev=3341333","caption":"Reviews on mobile in a carousel with play\/pause and like integration."},{"src":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/screenshot-3.png?rev=3341333","caption":"Settings screen \u2014 AboutBuzz Activation."},{"src":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/screenshot-4.png?rev=3341333","caption":"Entering your secret key from aboutbuzz.com."},{"src":"https:\/\/ps.w.org\/aboutbuzz-stories-embed\/assets\/screenshot-5.png?rev=3341333","caption":"Embedding reviews via shortcode."}],"raw_content":"<!--section=description-->\n<p>AboutBuzz Stories Embed renders a responsive, lazy-loading carousel of verified video reviews from AboutBuzz.com. Add the shortcode <code>[aboutbuzz_reviews code=\"ABZ-XXXX-XXXX-XXXX-XXXX\"]<\/code> anywhere in your content and the plugin handles fetching, caching, and rendering.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to AboutBuzz.com to fetch video stories and record likes. All requests are over HTTPS.<\/p>\n\n<ul>\n<li>Endpoint <code>https:\/\/aboutbuzz.com\/wp-json\/aboutbuzz\/v1\/stories\/by-code<\/code> \u2014 fetches stories for a given activation code (sent: code, plugin version).<\/li>\n<li>Endpoint <code>https:\/\/aboutbuzz.com\/wp-json\/aboutbuzz\/v1\/like\/<\/code> \u2014 records a like (sent: post ID, plugin version).<\/li>\n<\/ul>\n\n<p>Successful story responses are cached for 5 minutes per activation code in a WordPress transient. No personal visitor data is collected by the plugin.<\/p>\n\n<ul>\n<li>Terms of Service: https:\/\/aboutbuzz.com\/terms-of-service\/<\/li>\n<li>Privacy Policy: https:\/\/aboutbuzz.com\/privacy-policy\/<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/aboutbuzz-stories-embed<\/code>, or install it via the Plugins screen in WordPress.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Add <code>[aboutbuzz_reviews code=\"YOUR_CODE\"]<\/code> to any post or page. Get your code from your AboutBuzz dashboard.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20get%20an%20activation%20code%3F\"><h3>How do I get an activation code?<\/h3><\/dt>\n<dd><p>Sign in to your AboutBuzz dashboard at https:\/\/aboutbuzz.com or contact support.<\/p><\/dd>\n<dt id=\"is%20the%20widget%20mobile-friendly%3F\"><h3>Is the widget mobile-friendly?<\/h3><\/dt>\n<dd><p>Yes \u2014 it renders as a single-row, scroll-snapping carousel that adapts to viewport width.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.2<\/h4>\n\n<p><strong>Branding refresh, mobile layout fix, and per-review language labels.<\/strong> Updates the widget palette to the new AboutBuzz brand colors, resolves a mobile-only layout bug where the rating stars wrapped onto a second line on narrow cards, and renders the \"Verified product review\" label in the language of each individual review.<\/p>\n\n<ul>\n<li><strong>Per-review \"Verified product review\" label.<\/strong> The label under each video is now selected from the review's <code>acf.jezik<\/code> field (returned by <code>\/wp-json\/aboutbuzz\/v1\/stories\/by-code<\/code>), so a Slovenian review shows \"Ocena testiranega izdelka\" while an English review on the same page shows \"Verified product review\". Six languages are supported out-of-the-box, with both Slovene-language and English-language native names accepted as input values:\n\n<ul>\n<li>Slovenian (<code>Sloven\u0161\u010dina<\/code> \/ <code>Slovenian<\/code>) \u2192 \"Ocena testiranega izdelka\"<\/li>\n<li>English (<code>Angle\u0161\u010dina<\/code> \/ <code>English<\/code>) \u2192 \"Verified product review\"<\/li>\n<li>Russian (<code>Ru\u0161\u010dina<\/code> \/ <code>Russian<\/code>) \u2192 \"\u041f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0437\u044b\u0432 \u043e \u0442\u043e\u0432\u0430\u0440\u0435\"<\/li>\n<li>German (<code>Nem\u0161\u010dina<\/code> \/ <code>German<\/code>) \u2192 \"Verifizierte Produktbewertung\"<\/li>\n<li>Latvian (<code>Latvi\u0161\u010dina<\/code> \/ <code>Latvian<\/code>) \u2192 \"Apstiprin\u0101ta produkta atsauksme\"<\/li>\n<li>Turkish (<code>Tur\u0161\u010dina<\/code> \/ <code>Turkish<\/code>) \u2192 \"Do\u011frulanm\u0131\u015f \u00fcr\u00fcn yorumu\"<\/li>\n<li>Unknown \/ missing values fall back to the WordPress site locale via the existing <code>__('Verified product review', \u2026)<\/code> translation, so behavior on existing sites is unchanged when the API has no language data.<\/li>\n<\/ul><\/li>\n<li><strong><code>language<\/code> added to the sanitized story array.<\/strong> A new <code>language<\/code> key (canonical 2-letter code) is now stored in the per-story sanitized array and the 5-minute response cache. A migration guard discards any 2.0.1 transient entry that's missing this key on first read after upgrade, so the new label kicks in immediately on the next render \u2014 no manual cache flush required.<\/li>\n<li><strong>Brand palette updated.<\/strong> <code>--aboutbuzz-text<\/code> changed from <code>#545454<\/code> to <code>#404040<\/code>, and <code>--aboutbuzz-accent<\/code> changed from <code>#007cba<\/code> to <code>#01798C<\/code> (new AboutBuzz teal). Affects body text and any element bound to the accent variable (logo text, etc.).<\/li>\n<li><strong>Loading spinner restyled.<\/strong> Spinner border thickness increased from <code>2px<\/code> to <code>3px<\/code>, and the active arc color now uses the new accent <code>#01798C<\/code> instead of the previous <code>#3498db<\/code>.<\/li>\n<li><strong>Mobile card width increased from 58% to 80%<\/strong> of the viewport (<code>@media (max-width: 600px)<\/code>). The narrower card was causing the rating row to overflow and the star icons to wrap onto a new line on small screens. <code>scroll-padding-inline<\/code> was updated in lockstep so scroll-snap centering still works.<\/li>\n<li><strong>Rating row hardened against overflow.<\/strong> <code>.row-0<\/code> \/ <code>.ab-info-row<\/code> now declares <code>flex-wrap: nowrap<\/code> with <code>gap: 8px<\/code>. The rating-stars container is <code>inline-flex<\/code> with <code>flex-shrink: 0<\/code> and <code>white-space: nowrap<\/code>, and <code>.aboutbutzz_like_wrapper<\/code> is also <code>flex-shrink: 0<\/code>. Stars and the like button stay on a single row regardless of card width.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<p><strong>Privacy hardening.<\/strong> Reduces the surface area for personal data from the AboutBuzz API to land on the client site.<\/p>\n\n<ul>\n<li><strong>Response caching now holds a sanitized array instead of the raw API body.<\/strong> The <code>aboutbuzz_stories_bycode_&lt;md5&gt;<\/code> transient previously stored the full JSON response body as a string, meaning any fields the server returned (including ones this plugin does not render) would sit in <code>wp_options<\/code> for up to 5 minutes per activation code. The transient now stores only the allowlisted <code>$sanitized_posts<\/code> array (ID, rating, vote_count, watermark_video, product_source, brand, and the video URL) that the template actually consumes. Extra server-returned fields are dropped before caching.<\/li>\n<li><strong>Removed the unused <code>post_title<\/code> field<\/strong> from the sanitized story array. It was being copied from the API response but never rendered anywhere in the template. Since <code>post_title<\/code> on the AboutBuzz side can contain reviewer names, stripping it here removes that field from the client's in-memory and cached representation of each story.<\/li>\n<li><strong>Migration guard for the legacy cache format.<\/strong> Existing transient entries (stored as JSON strings by earlier builds) are discarded on first read after upgrade; the next render repopulates the cache in the new array format. No manual cache flush required.<\/li>\n<li>5-minute cache TTL and the <code>?abz_nocache=1<\/code> admin bypass are unchanged.<\/li>\n<li>Removed per-review title interpolation from video <code>aria-label<\/code> and <code>alt<\/code> strings; accessibility labels are now generic (\"Predvajaj video oceno\" \/ \"Predogled video ocene\"). Translations (<code>.pot<\/code>, <code>sl_SI<\/code>, <code>en_US<\/code>) updated to match the new msgids.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<p><strong>Major release.<\/strong> Card design redesigned to match aboutbuzz.com homepage, CSS architecture moved to <code>@scope<\/code> for isolation, response caching added, new Product Source badges, admin diagnostics for error paths.<\/p>\n\n<ul>\n<li>\"Verified Purchase\" \/ \"Verified Tester\" overlay badges driven by the <code>product_source<\/code> ACF field; assets bundled locally.<\/li>\n<li>Rating row always renders 5 inline-SVG stars (filled <code>#FFB600<\/code>, empty outlined <code>#C7C7C7<\/code>).<\/li>\n<li>Always-on single-row scroll-snap carousel; mobile cards at 58% of viewport so neighbours peek.<\/li>\n<li>All widget styles wrapped in <code>@scope (.aboutbuzz-reviews-host) { ... }<\/code>; CSS custom properties exposed for theming (<code>--aboutbuzz-card-bg<\/code>, <code>--aboutbuzz-text<\/code>, <code>--aboutbuzz-muted<\/code>, <code>--aboutbuzz-accent<\/code>, <code>--aboutbuzz-star-filled<\/code>, <code>--aboutbuzz-star-empty<\/code>, <code>--aboutbuzz-radius<\/code>, <code>--aboutbuzz-video-height<\/code>).<\/li>\n<li>5-minute response cache per activation code; errors never cached. Per-visitor rate limit counts cache misses only (60\/hour). Admin <code>?abz_nocache=1<\/code> bypass.<\/li>\n<li>Admin-only yellow info boxes for rate-limit \/ HTTP error \/ network error \/ invalid-JSON paths; public visitors see nothing.<\/li>\n<li>New <code>ABOUTBUZZ_EMBED_VERSION<\/code> constant drives enqueue cache-busting and API <code>User-Agent<\/code>.<\/li>\n<li>Star row carries an <code>aria-label<\/code> with the numeric rating; individual SVGs are <code>aria-hidden<\/code>. Decorative check <code>alt<\/code> emptied.<\/li>\n<li><code>.pot<\/code>, <code>en_US.po<\/code>, <code>sl_SI.po<\/code> updated; <code>.mo<\/code> files recompiled.<\/li>\n<\/ul>\n\n<p><strong>Breaking changes:<\/strong><\/p>\n\n<ul>\n<li>The legacy \"wrap as a row at 1\u20133 videos, carousel at 4+\" layout is gone \u2014 every count renders as a carousel.<\/li>\n<li>Brand-site CSS targeting class names the plugin never emits (<code>.playbutton<\/code>, <code>.heart-icon<\/code>, <code>.vote-button-overlay<\/code>, <code>.vote-count<\/code>, <code>.voting<\/code>, <code>.video-preview<\/code>) will continue to do nothing.<\/li>\n<li>If a brand theme forces <code>.ab-info-row { display: grid }<\/code>, the flex-based layout will break \u2014 remove the conflicting rule.<\/li>\n<\/ul>\n\n<h4>1.9.x<\/h4>\n\n<ul>\n<li>1.9.3 \u2014 Fixed first thumbnail not loading on sites using third-party lazy-loaders (WP Rocket, LiteSpeed). Added <code>data-no-lazy<\/code>, <code>data-skip-lazy<\/code>, <code>skip-lazy<\/code>, <code>no-lazyload<\/code> to the first image.<\/li>\n<li>1.9.2 \u2014 Updated plugin logo.<\/li>\n<li>1.9.1 \u2014 Full i18n support: translatable strings, <code>.pot<\/code> template, <code>sl_SI<\/code> and <code>en_US<\/code> catalogs, translatable ARIA labels.<\/li>\n<li>1.9.0 \u2014 Shortcode renamed <code>[aboutbuzz_smart_stories]<\/code> \u2192 <code>[aboutbuzz_reviews]<\/code>. Auto-detects brand from the activation code; <code>code<\/code> is the only parameter.<\/li>\n<\/ul>\n\n<h4>1.8.x<\/h4>\n\n<ul>\n<li>1.8.2 \u2014 Removed problematic <code>all: unset<\/code> reset.<\/li>\n<li>1.8.1 \u2014 Assets fix.<\/li>\n<li>1.8.0 \u2014 Visual redesign: modern layout, refreshed colors, improved spacing, better like-button feedback, custom Nunito Sans font, new SVG carousel arrows.<\/li>\n<\/ul>\n\n<h4>1.7.x<\/h4>\n\n<ul>\n<li>1.7.9 \u2014 Heart icon styling fix (red, proper opacity states).<\/li>\n<li>1.7.8 \u2014 Added \"Oddaj video mnenje\" upload link.<\/li>\n<li>1.7.7 \u2014 Major WordPress.org compliance pass: external CSS\/JS, AJAX likes, CORS + nonces, no inline styles.<\/li>\n<li>Earlier 1.7.x \u2014 Initial release, carousel, like button, mobile centering, caching.<\/li>\n<\/ul>","raw_excerpt":"Embed AboutBuzz video stories on your WordPress site with a single shortcode.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/242470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=242470"}],"author":[{"embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ftpwebdesign"}],"wp:attachment":[{"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=242470"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=242470"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=242470"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=242470"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=242470"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/cn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=242470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}