{"id":387815,"date":"2026-10-19T12:33:22","date_gmt":"2026-10-19T12:33:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/mad-cow-banners-for-woocommerce\/"},"modified":"2026-10-19T12:32:57","modified_gmt":"2026-10-19T12:32:57","slug":"mad-cow-banners-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/mad-cow-banners-for-woocommerce\/","author":425906,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.8","stable_tag":"1.0.8","tested":"7.1.3","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Mad Cow Banners for WooCommerce","header_author":"Mad Cow Web","header_description":"Schedule targeted banners on WooCommerce single product, shop, cart and checkout pages, before or after the content, aimed at all products, chosen categories or specific products.","assets_banners_color":"475161","last_updated":"2026-10-19 12:32:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/madcowweb.com\/mad-cow-banners-for-woocommerce\/","header_author_uri":"https:\/\/madcowweb.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":66,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.8":{"tag":"1.0.8","author":"jrobie23","date":"2026-10-19 12:32:57","revision":3754734}},"upgrade_notice":{"1.0.7":"<p>Appearance measurements are now validated before they reach the page. Recommended for all users.<\/p>","1.0.6":"<p>Updates now come from WordPress.org. Block cart and checkout banners are hooked more efficiently, and three form values are now unslashed before sanitising.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3754732,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3754732,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3754732,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.8"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3754732,"resolution":"1","location":"assets","locale":"","width":2994,"height":988},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3754732,"resolution":"2","location":"assets","locale":"","width":2984,"height":2586},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3754732,"resolution":"3","location":"assets","locale":"","width":2982,"height":2784},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3754732,"resolution":"4","location":"assets","locale":"","width":2996,"height":2002}},"screenshots":{"1":"All banners at a glance, with each one's location, position and targeting.","2":"Editing a product page banner: content, display locations, position, order, scheduling, targeting and appearance.","3":"A second banner set for the cart, with its own colours and spacing.","4":"That cart banner running before the content on the cart page."}},"plugin_section":[],"plugin_tags":[7557,2608,11326,2649,286],"plugin_category":[45],"plugin_contributors":[146391],"plugin_business_model":[],"class_list":["post-387815","plugin","type-plugin","status-publish","hentry","plugin_tags-announcements","plugin_tags-banners","plugin_tags-notices","plugin_tags-promotions","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-jrobie23","plugin_committers-jrobie23"],"banners":{"banner":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/banner-772x250.jpg?rev=3754732","banner_2x":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/banner-1544x500.jpg?rev=3754732","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/icon-256x256.png?rev=3754732","icon_2x":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/icon-256x256.png?rev=3754732","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/screenshot-1.png?rev=3754732","caption":"All banners at a glance, with each one's location, position and targeting."},{"src":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/screenshot-2.png?rev=3754732","caption":"Editing a product page banner: content, display locations, position, order, scheduling, targeting and appearance."},{"src":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/screenshot-3.png?rev=3754732","caption":"A second banner set for the cart, with its own colours and spacing."},{"src":"https:\/\/ps.w.org\/mad-cow-banners-for-woocommerce\/assets\/screenshot-4.png?rev=3754732","caption":"That cart banner running before the content on the cart page."}],"raw_content":"<!--section=description-->\n<p>Create promotional banners and announcements and place them on your store, without touching a template.<\/p>\n\n<p>Each banner is written in the standard WordPress editor and controlled from its own screen, so you can run several at once with different targeting, scheduling and styling.<\/p>\n\n<p>Here is a quick overview:<\/p>\n\n<p>[youtube https:\/\/www.youtube.com\/watch?v=FWDg-0UkznE]<\/p>\n\n<h4>Where a banner can appear<\/h4>\n\n<ul>\n<li><strong>Single product pages<\/strong><\/li>\n<li><strong>Shop and category archives<\/strong><\/li>\n<li><strong>Cart<\/strong><\/li>\n<li><strong>Checkout<\/strong><\/li>\n<\/ul>\n\n<p>Choose any combination, and place the banner <strong>before<\/strong> or <strong>after<\/strong> the page content.<\/p>\n\n<h4>Who sees it<\/h4>\n\n<ul>\n<li><strong>All products<\/strong> - shown everywhere the chosen locations apply<\/li>\n<li><strong>Specific categories<\/strong> - only for products in the categories you pick<\/li>\n<li><strong>Specific products<\/strong> - only for the products you pick<\/li>\n<\/ul>\n\n<h4>Scheduling<\/h4>\n\n<p>Give a banner a start and end date and time and it appears and disappears on its own. Leave them empty and it runs until you unpublish it. Dates use your site's timezone.<\/p>\n\n<h4>Styling<\/h4>\n\n<ul>\n<li>Background and text colour<\/li>\n<li>Padding, margin and corner radius<\/li>\n<li>Your own CSS class for finer control from your theme<\/li>\n<li>A display order, so several banners in the same spot stack predictably<\/li>\n<\/ul>\n\n<h4>Block Cart and Checkout<\/h4>\n\n<p>The cart and checkout banners work with both the classic shortcode pages and the newer Cart and Checkout blocks.<\/p>\n\n<h4>Requirements<\/h4>\n\n<p>WooCommerce 7.0 or later must be installed and active. Compatible with High-Performance Order Storage (HPOS).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>mad-cow-banners-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 Banners<\/strong> and add your first banner.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20run%20more%20than%20one%20banner%20in%20the%20same%20place%3F\"><h3>Can I run more than one banner in the same place?<\/h3><\/dt>\n<dd><p>Yes. Set a display order on each and they stack in that order.<\/p><\/dd>\n<dt id=\"do%20banners%20work%20on%20the%20block-based%20cart%20and%20checkout%3F\"><h3>Do banners work on the block-based Cart and Checkout?<\/h3><\/dt>\n<dd><p>Yes. The cart and checkout locations work with the classic shortcode pages and with the Cart and Checkout blocks.<\/p><\/dd>\n<dt id=\"what%20timezone%20do%20the%20start%20and%20end%20dates%20use%3F\"><h3>What timezone do the start and end dates use?<\/h3><\/dt>\n<dd><p>Your site's timezone, as set in Settings &gt; General. The field shows the abbreviation so you can confirm it.<\/p><\/dd>\n<dt id=\"can%20i%20put%20html%20or%20a%20shortcode%20in%20a%20banner%3F\"><h3>Can I put HTML or a shortcode in a banner?<\/h3><\/dt>\n<dd><p>Yes. Banner content runs through the same filters as post content, so formatting, images, shortcodes and embeds all work.<\/p><\/dd>\n<dt id=\"how%20do%20i%20stop%20a%20banner%20without%20deleting%20it%3F\"><h3>How do I stop a banner without deleting it?<\/h3><\/dt>\n<dd><p>Set it to draft, or give it an end date in the past.<\/p><\/dd>\n<dt id=\"can%20i%20style%20a%20banner%20beyond%20the%20built-in%20options%3F\"><h3>Can I style a banner beyond the built-in options?<\/h3><\/dt>\n<dd><p>Add your own CSS class to the banner and target it from your theme stylesheet.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Security: banner HTML is now escaped at output with <code>wp_kses_post()<\/code>, and the inline style attribute is assembled unescaped and escaped once at output instead of per-part.<\/li>\n<li>Hardening: admin settings markup no longer emits a conditional style attribute from an unescaped expression.<\/li>\n<li>Changed: the front-end banner query is capped at 25 published banners instead of being unbounded.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fixed: banners with no stored display order are no longer excluded from the front end. Ordering is now done in PHP instead of through a postmeta join, which also removes that join from every store page load.<\/li>\n<li>Fixed: the Padding, Margin and Border Radius fields are now validated as CSS measurements before being written into the banner's style attribute. A value that is not a valid measurement is rejected with a notice and the previous value is kept, instead of being passed through to the page.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Changed: prepared for the WordPress.org plugin directory. Updates now come from WordPress.org.<\/li>\n<li>Changed: the cart and checkout block banners now hook the block-specific render filters rather than the generic one, so the callback no longer runs on every block of every page.<\/li>\n<li>Changed: description now mentions scheduling and the before\/after content placement.<\/li>\n<li>Fixed: three form values were read without unslashing before sanitisation.<\/li>\n<li>Changed: tested against WordPress 7.1 and WooCommerce 11.1.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Previous self-hosted release.<\/li>\n<\/ul>","raw_excerpt":"Schedule targeted banners on WooCommerce product, shop, cart and checkout pages, aimed at all products, chosen categories or specific products.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387815","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=387815"}],"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=387815"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387815"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387815"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387815"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387815"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}