{"id":375548,"date":"2026-10-05T20:27:48","date_gmt":"2026-10-05T20:27:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mad-cow-product-badges-for-woocommerce\/"},"modified":"2026-10-05T20:27:30","modified_gmt":"2026-10-05T20:27:30","slug":"mad-cow-product-badges-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mad-cow-product-badges-for-woocommerce\/","author":425906,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.3","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Mad Cow Product Badges for WooCommerce","header_author":"Mad Cow Web","header_description":"Overlay text or image badges on WooCommerce product images, in the shop loop and on product pages. Target them at sale, featured, new or low-stock products, or at chosen categories.","assets_banners_color":"475261","last_updated":"2026-10-05 20:27:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/madcowweb.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":295,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"jrobie23","date":"2026-10-05 20:27:30","revision":3729632}},"upgrade_notice":{"1.0.1":"<p>Updates now come from WordPress.org. Corrects the plugin description and fixes the text domain so translations load.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3729632,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3729632,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3729632,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3729632,"resolution":"1","location":"assets","locale":"","width":1898,"height":3076},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3729632,"resolution":"2","location":"assets","locale":"","width":1884,"height":3008},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3729632,"resolution":"3","location":"assets","locale":"","width":1712,"height":2134}},"screenshots":{"1":"The settings screen, with the default sale badge option and a text badge configured.","2":"An image badge, with its size, border, position and display condition.","3":"Badges in the shop loop. WooCommerce's own \"Sale!\" flash still shows on sale products that are not badged."}},"plugin_section":[],"plugin_tags":[2306,173988,75741,186632,286],"plugin_category":[45],"plugin_contributors":[146391],"plugin_business_model":[],"class_list":["post-375548","plugin","type-plugin","status-publish","hentry","plugin_tags-badges","plugin_tags-product-badges","plugin_tags-product-labels","plugin_tags-sale-badge","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-jrobie23","plugin_committers-jrobie23"],"banners":{"banner":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/banner-772x250.jpg?rev=3729632","banner_2x":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/banner-1544x500.jpg?rev=3729632","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/icon-256x256.png?rev=3729632","icon_2x":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/icon-256x256.png?rev=3729632","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/screenshot-1.png?rev=3729632","caption":"The settings screen, with the default sale badge option and a text badge configured."},{"src":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/screenshot-2.png?rev=3729632","caption":"An image badge, with its size, border, position and display condition."},{"src":"https:\/\/ps.w.org\/mad-cow-product-badges-for-woocommerce\/assets\/screenshot-3.png?rev=3729632","caption":"Badges in the shop loop. WooCommerce's own \"Sale!\" flash still shows on sale products that are not badged."}],"raw_content":"<!--section=description-->\n<p>Add badges over your product images in the shop loop and on single product pages. Each badge can be plain text or an uploaded image, styled how you like, and shown only on the products you choose.<\/p>\n\n<p>Here is a quick overview:<\/p>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=Za4-uz0nwS4]<\/p>\n\n<h4>Badge types<\/h4>\n\n<ul>\n<li><strong>Text<\/strong> - your own wording, with control over colour, font, size, padding, border and corner radius<\/li>\n<li><strong>Image<\/strong> - upload any image from the media library and set its width and height<\/li>\n<\/ul>\n\n<h4>Where a badge appears<\/h4>\n\n<p>Each badge carries its own condition:<\/p>\n\n<ul>\n<li><strong>All products<\/strong><\/li>\n<li><strong>On sale<\/strong> - products currently discounted<\/li>\n<li><strong>Featured<\/strong> - products flagged as featured in WooCommerce<\/li>\n<li><strong>New<\/strong> - products published within a number of days you set<\/li>\n<li><strong>Low stock<\/strong> - products at or below a stock threshold you set<\/li>\n<li><strong>Specific categories<\/strong> - products in the categories you select<\/li>\n<\/ul>\n\n<h4>Styling<\/h4>\n\n<ul>\n<li>Background, text and border colours<\/li>\n<li>Font family from a curated list, plus font size<\/li>\n<li>Border width, style and radius<\/li>\n<li>Independent padding on all four sides<\/li>\n<li>Position by offset from any corner of the product image<\/li>\n<li>Your own CSS class on any badge, for finer control from your theme<\/li>\n<\/ul>\n\n<h4>Other<\/h4>\n\n<ul>\n<li>Add as many badges as you need<\/li>\n<li>Enable or disable a badge without deleting it<\/li>\n<li>Decide what happens to WooCommerce's built-in \"Sale!\" flash: always show it, hide it everywhere, or hide it only on the products where one of your own badges is showing<\/li>\n<li>Compatible with High-Performance Order Storage (HPOS)<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<p>WooCommerce 7.0 or later must be installed and active.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mad-cow-product-badges-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install through the Plugins screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Go to <strong>WooCommerce &gt; MCW Product Badges<\/strong> to add your first badge.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20show%20more%20than%20one%20badge%20on%20the%20same%20product%3F\"><h3>Can I show more than one badge on the same product?<\/h3><\/dt>\n<dd><p>Yes. Every badge is evaluated independently, so a product can carry several at once. Give them different corner positions so they do not overlap.<\/p><\/dd>\n<dt id=\"will%20this%20clash%20with%20woocommerce%27s%20own%20%22sale%21%22%20badge%3F\"><h3>Will this clash with WooCommerce's own \"Sale!\" badge?<\/h3><\/dt>\n<dd><p>Only if you want it to. The Default Sale Badge setting has three options: always show WooCommerce's flash, hide it everywhere, or hide it only on products where one of your badges is showing. The last option is usually what you want, since it leaves the built-in flash doing its job on products you have not badged.<\/p><\/dd>\n<dt id=\"do%20badges%20appear%20on%20the%20shop%20page%20as%20well%20as%20the%20product%20page%3F\"><h3>Do badges appear on the shop page as well as the product page?<\/h3><\/dt>\n<dd><p>Yes, both. They render in the shop and archive loops and on single product pages.<\/p><\/dd>\n<dt id=\"how%20is%20%22new%22%20decided%3F\"><h3>How is \"New\" decided?<\/h3><\/dt>\n<dd><p>By the product's publish date, against a number of days you set on the badge. A product published inside that window gets the badge.<\/p><\/dd>\n<dt id=\"can%20i%20style%20a%20badge%20beyond%20the%20built-in%20options%3F\"><h3>Can I style a badge beyond the built-in options?<\/h3><\/dt>\n<dd><p>Yes. Add your own CSS class to the badge and target it from your theme stylesheet.<\/p><\/dd>\n<dt id=\"is%20there%20a%20filter%20for%20developers%3F\"><h3>Is there a filter for developers?<\/h3><\/dt>\n<dd><p>Two. <code>mcwspb_should_show_badge<\/code> decides whether a badge displays, and <code>mcwspb_badge_html<\/code> filters the markup before output.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Security: badge HTML returned by the <code>mcwspb_badge_html<\/code> filter is now escaped at output with <code>wp_kses_post()<\/code>.<\/li>\n<li>Hardening: admin settings markup no longer emits a conditional style attribute from an unescaped expression.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added: the Default Sale Badge setting now offers three choices instead of an on\/off checkbox. WooCommerce's \"Sale!\" flash can be left alone, hidden everywhere, or hidden only on products where one of your badges is showing.<\/li>\n<li>Changed: removed the Plugin URI header while the page it pointed to is unpublished.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Changed: prepared for the WordPress.org plugin directory. Updates now come from WordPress.org.<\/li>\n<li>Changed: corrected the plugin description, which listed a \"Free Shipping\" condition that does not exist and omitted the Featured and Specific Categories conditions.<\/li>\n<li>Fixed: the text domain did not match the plugin slug, which prevented translations from loading.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Overlay text or image badges on WooCommerce product images, targeted at sale, featured, new, low-stock or category-matched products.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375548","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=375548"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jrobie23"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375548"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375548"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375548"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375548"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375548"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}