{"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-08-20T06:33:28","modified_gmt":"2026-08-20T06:33:28","slug":"plogins-sale-stock-badges","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/plogins-sale-stock-badges\/","author":108511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.17","stable_tag":"1.0.17","tested":"7.1","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-08-20 06:33:28","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":5,"author_block_rating":0,"active_installs":0,"downloads":333,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.10":{"tag":"1.0.10","author":"motylanogha","date":"2026-07-19 14:16:18"},"1.0.11":{"tag":"1.0.11","author":"motylanogha","date":"2026-07-24 12:15:08"},"1.0.13":{"tag":"1.0.13","author":"motylanogha","date":"2026-07-28 10:56:27"},"1.0.14":{"tag":"1.0.14","author":"motylanogha","date":"2026-07-28 18:02:57"},"1.0.15":{"tag":"1.0.15","author":"motylanogha","date":"2026-08-13 11:53:12"},"1.0.16":{"tag":"1.0.16","author":"motylanogha","date":"2026-08-14 13:57:58"},"1.0.17":{"tag":"1.0.17","author":"motylanogha","date":"2026-08-20 06:33:28"},"1.0.9":{"tag":"1.0.9","author":"motylanogha","date":"2026-07-17 18:47:09"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"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.10","1.0.11","1.0.13","1.0.14","1.0.15","1.0.16","1.0.17","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<p>Reporting a security issue: email hello@wppoland.com, and under our <a href=\"https:\/\/wppoland.com\/en\/security-policy\/\">coordinated disclosure policy<\/a> we confirm within two business days, assess within five, and patch a critical issue within seven days of confirming it.<\/p>\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, billed in EUR.<\/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.17<\/h4>\n\n<ul>\n<li>Docs: corrected the PRO pricing line. PRO is 19 EUR per year and is billed in EUR. The previous wording implied a PLN option, which we do not offer.<\/li>\n<\/ul>\n\n<h4>1.0.16<\/h4>\n\n<ul>\n<li>Fix: the Discount percent badge now shows on variable products, using the biggest saving across their variations. Until now a variable product on sale got the Sale badge but never the percentage.<\/li>\n<li>Fix: \"Hide theme Sale! flash\" now works on its own. Before, it only did anything while the Sale badge was also ticked, so hiding the flash and using the Discount percent badge instead left the theme's \"Sale!\" on every card.<\/li>\n<\/ul>\n\n<h4>1.0.15<\/h4>\n\n<ul>\n<li>Fix: the manual badge label on the settings screen is finally used. Set <code>_marks_manual_text<\/code> to 1 on a product and it shows that label; type your own wording in the meta and that product uses it instead. Until now the label was saved and ignored, so a product flagged with 1 wore a badge that said \"1\".<\/li>\n<\/ul>\n\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Translations: completed Polish, German and Spanish for the PRO upgrade panel.<\/li>\n<\/ul>\n\n<h4>1.0.12<\/h4>\n\n<ul>\n<li>Added an in-plugin PRO upgrade panel on the settings screen (dismissible).<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Declared compatibility with WooCommerce 10.9.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Translation quality pass: corrected Polish, German and Spanish (product names kept in English, legal withdrawal terminology, WooCommerce glossary and grammar fixes).<\/li>\n<\/ul>\n\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:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/340511","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=340511"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/motylanogha"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=340511"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=340511"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=340511"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=340511"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=340511"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=340511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}