{"id":340511,"date":"2026-07-17T18:47:18","date_gmt":"2026-07-17T18:47:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/plogins-marks-sale-stock-badges-for-woocommerce\/"},"modified":"2026-07-17T18:47:09","modified_gmt":"2026-07-17T18:47:09","slug":"plogins-sale-stock-badges","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/plogins-sale-stock-badges\/","author":108511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.9","stable_tag":"1.0.9","tested":"7.0.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Sale & Stock Badges for WooCommerce","header_author":"WPPoland.com","header_description":"Automatic and manual product badges for WooCommerce (sale, new, low-stock, bestseller): CSS-only, no layout shift.","assets_banners_color":"dededf","last_updated":"2026-07-17 18:47:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plogins.com\/plogins-sale-stock-badges\/","header_author_uri":"https:\/\/wppoland.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.9":{"tag":"1.0.9","author":"motylanogha","date":"2026-07-17 18:47:09"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3611922,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3611922,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3611927,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3611927,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3611922,"resolution":"1","location":"assets","locale":"","width":1600,"height":1200},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3611922,"resolution":"2","location":"assets","locale":"","width":1600,"height":1200}},"screenshots":{"1":"Automatic badges on a shop listing.","2":"The Sale &amp; Stock Badges settings screen."}},"plugin_section":[],"plugin_tags":[243403,272079,173988,186632,286],"plugin_category":[45],"plugin_contributors":[264912],"plugin_business_model":[],"class_list":["post-340511","plugin","type-plugin","status-publish","hentry","plugin_tags-low-stock","plugin_tags-new-badge","plugin_tags-product-badges","plugin_tags-sale-badge","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-motylanogha","plugin_committers-motylanogha"],"banners":{"banner":"https:\/\/ps.w.org\/plogins-sale-stock-badges\/assets\/banner-772x250.png?rev=3611927","banner_2x":"https:\/\/ps.w.org\/plogins-sale-stock-badges\/assets\/banner-1544x500.png?rev=3611927","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/plogins-sale-stock-badges\/assets\/icon-128x128.png?rev=3611922","icon_2x":"https:\/\/ps.w.org\/plogins-sale-stock-badges\/assets\/icon-256x256.png?rev=3611922","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/plogins-sale-stock-badges\/assets\/screenshot-1.png?rev=3611922","caption":"Automatic badges on a shop listing."},{"src":"https:\/\/ps.w.org\/plogins-sale-stock-badges\/assets\/screenshot-2.png?rev=3611922","caption":"The Sale &amp; Stock Badges settings screen."}],"raw_content":"<!--section=description-->\n<p>Sale &amp; Stock Badges puts badges on your WooCommerce products. Some appear on their own from each\nproduct's current state (<strong>Sale<\/strong>, <strong>New<\/strong>, <strong>Low stock<\/strong>, <strong>Bestseller<\/strong>, and a few\nothers), and you can also set one manual badge per product using a store-wide label\nand colour.<\/p>\n\n<p>The badges are drawn with CSS and sit over the product image, so they add no\nJavaScript and don't shift the layout when the page loads. They show on the single\nproduct page and on shop, category and tag listings.<\/p>\n\n<p>The code is open and lives on <a href=\"https:\/\/github.com\/wppoland\/plogins-marks\">GitHub<\/a> if you want to read\nit, file a bug or send a patch.<\/p>\n\n<p>Configuration lives under a top-level <strong>Sale &amp; Stock Badges<\/strong> admin menu: a global on\/off\ntoggle, placement controls, per-rule toggles with custom labels, thresholds, an\nappearance section (shape, uppercase, per-context caps) and the manual badge\nlabel and colour. Settings are sanitised and clamped on save.<\/p>\n\n<h4>Documentation and links<\/h4>\n\n<ul>\n<li><strong>Documentation<\/strong> - <a href=\"https:\/\/plogins.com\/plogins-marks\/docs\/\">plogins.com\/plogins-marks\/docs<\/a><\/li>\n<li><strong>Plugin page<\/strong> - <a href=\"https:\/\/plogins.com\/plogins-marks\/\">plogins.com\/plogins-marks<\/a><\/li>\n<li><strong>Source code<\/strong> - <a href=\"https:\/\/github.com\/wppoland\/plogins-marks\">github.com\/wppoland\/plogins-marks<\/a><\/li>\n<li><strong>Bug reports and feature requests<\/strong> - <a href=\"https:\/\/github.com\/wppoland\/plogins-marks\/issues\">GitHub issues<\/a><\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Automatic badges: Sale, New, Low stock, Bestseller, Discount percent, Free shipping, Out of stock.<\/li>\n<li>Custom label text for every automatic badge.<\/li>\n<li>Configurable thresholds: newness window, low-stock level, bestseller sales.<\/li>\n<li>Free-shipping detection by product shipping class.<\/li>\n<li>Placement controls: single product page and\/or shop and category listings.<\/li>\n<li>Appearance controls: pill or square shape, uppercase, and a per-context badge cap.<\/li>\n<li><code>[marks_badges]<\/code> shortcode to place badges anywhere.<\/li>\n<li>A single manual badge (label + colour) shown per product via meta.<\/li>\n<li>CSS-only rendering: no JavaScript, no layout shift.<\/li>\n<li>Global on\/off toggle and per-rule toggles.<\/li>\n<li>Translation ready (POT included) and clean uninstall.<\/li>\n<li>HPOS and cart\/checkout blocks compatible.<\/li>\n<\/ul>\n\n<h4>The [marks_badges] shortcode<\/h4>\n\n<p>Use <code>[marks_badges]<\/code> to drop a product's badges into any page, post or widget. With\nno attributes it uses the current product (inside a loop or on a single product\npage). Pass <code>id<\/code> to target a specific product and <code>context<\/code> (<code>single<\/code> or <code>loop<\/code>) to\npick the render style:<\/p>\n\n<pre><code>[marks_badges id=\"123\" context=\"loop\"]\n<\/code><\/pre>\n\n<h3>Sale &amp; Stock Badges PRO<\/h3>\n\n<p>The free edition ships the core CSS badges (Sale, New, Low stock, Bestseller, manual). <strong>Sale &amp; Stock Badges PRO<\/strong> adds campaign and rules-based badging:<\/p>\n\n<ul>\n<li><strong>Scheduled and targeted badges<\/strong> - campaign badges with custom colours, a start\/end window and targeting by product, category or tag<\/li>\n<li><strong>Conditional display rules<\/strong> - store-wide rules that badge a product by category, price threshold or low stock<\/li>\n<li><strong>Image badges<\/strong> - show a certification or brand logo (PNG\/SVG) on a product<\/li>\n<li><strong>A\/B label sets<\/strong> - rotate competing badge labels with sticky cookies and per-variant impression counts<\/li>\n<\/ul>\n\n<p>Everything in the free edition stays free and open. Sale &amp; Stock Badges PRO starts at 19 EUR per year (PLN shown at checkout).<\/p>\n\n<p>Compare editions and pricing: <a href=\"https:\/\/plogins.com\/plogins-marks-pro\/pricing\/\">plogins.com\/plogins-marks-pro\/pricing<\/a><\/p>\n\n<h3>External Services<\/h3>\n\n<p>Sale &amp; Stock Badges does not connect to any external services. Badges are computed and drawn entirely on your own server from WooCommerce data already in your database (price, stock, sales, product dates and shipping class), and the badge CSS is served from the plugin's own assets.<\/p>\n\n<p>The plugin stores its configuration in two WordPress options (<code>marks_settings<\/code> and <code>marks_db_version<\/code>) and reads per-product post meta (<code>_marks_manual_text<\/code> and <code>_marks_manual_style<\/code>) for the manual badge. No visitor or store data is sent anywhere, and the plugin does not call home, load remote scripts or fonts, or send email.<\/p>\n\n<h3>Translations<\/h3>\n\n<p>Sale &amp; Stock Badges includes Polish, German and Spanish translations for the plugin interface. The text domain is <code>plogins-sale-stock-badges<\/code>, so WordPress.org language packs can also override or extend these bundled translations.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/marks<\/code>, or install via Plugins \u2192 Add New.<\/li>\n<li>Activate it. WooCommerce must be active.<\/li>\n<li>Go to the <strong>Sale &amp; Stock Badges<\/strong> menu, enable badges, and choose which automatic badges to show.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20require%20woocommerce%3F\"><h3>Does it require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes.<\/p><\/dd>\n<dt id=\"when%20does%20the%20%22new%22%20badge%20show%3F\"><h3>When does the \"New\" badge show?<\/h3><\/dt>\n<dd><p>On products created within the newness window (30 days by default).<\/p><\/dd>\n<dt id=\"when%20does%20the%20%22low%20stock%22%20badge%20show%3F\"><h3>When does the \"Low stock\" badge show?<\/h3><\/dt>\n<dd><p>On stock-managed products whose remaining quantity is at or below the configured\nlow-stock threshold.<\/p><\/dd>\n<dt id=\"how%20do%20i%20add%20a%20manual%20badge%20to%20a%20single%20product%3F\"><h3>How do I add a manual badge to a single product?<\/h3><\/dt>\n<dd><p>Set the manual badge label and colour on the Sale &amp; Stock Badges settings screen, then set the\nproduct meta <code>_marks_manual_text<\/code> (and optionally <code>_marks_manual_style<\/code>) on the\nproducts that should display it.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20wordpress%20multisite%3F\"><h3>Does this plugin work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. This plugin is compatible with WordPress Multisite. Network activate it or activate it on individual sites; each site keeps its own settings and data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Simplified the display name to Sale &amp; Stock Badges for WooCommerce (slug and text domain unchanged).<\/li>\n<li>Added an Elementor widget for product badges (self-guarding: loads only when Elementor is active).<\/li>\n<li>Admin settings screen now supports dark colour scheme.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Renamed the plugin to Plogins Sale &amp; Stock Badges for WooCommerce (new slug: plogins-sale-stock-badges) for a clearer, distinctive name per WordPress.org review. Text domain updated to match; internal data keys unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Shortened display name to Marks (dropped the Plogins brand prefix; slug unchanged).<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Corrected the product-badges filter prefix to marks_product_badges to match the plugin prefix.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Prefixed the product-badges filter hook (plogins_marks_product_badges) to satisfy WordPress plugin naming guidelines.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Accessibility improvements to the admin and storefront markup.<\/li>\n<li>Fixed low-contrast admin headings under an OS dark-mode preference.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Clearer name: Plogins Marks - Sale &amp; Stock Badges for WooCommerce.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added bundled Polish, German and Spanish translations for the plugin interface.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>First stable release.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Renamed to Plogins Marks for WooCommerce for a more distinctive plugin name.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New: optional hide of the default WooCommerce sale flash when the Marks sale badge is enabled.<\/li>\n<li>Admin settings help tooltips polish.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add Discount percent, Free shipping and Out of stock automatic badges.<\/li>\n<li>Add custom label text for every automatic badge.<\/li>\n<li>Add configurable newness-window and bestseller thresholds, plus free-shipping class detection.<\/li>\n<li>Add placement controls (single product page and\/or listings).<\/li>\n<li>Add appearance controls: badge shape, uppercase and per-context badge caps.<\/li>\n<li>Add the <code>[marks_badges]<\/code> shortcode for manual placement.<\/li>\n<li>Add a translation template (languages\/marks.pot) and an uninstall cleanup.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release: automatic Sale \/ New \/ Low stock \/ Bestseller badges, a manual badge, and a settings screen. CSS-only.<\/li>\n<\/ul>","raw_excerpt":"CSS-only product badges for WooCommerce: Sale, New, Low stock, Bestseller and a manual badge. No JavaScript, no layout shift.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/340511","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=340511"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/motylanogha"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=340511"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=340511"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=340511"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=340511"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=340511"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=340511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}