{"id":393192,"date":"2026-10-31T03:20:00","date_gmt":"2026-10-31T03:20:00","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gatemi-announcement-bar\/"},"modified":"2026-10-31T03:19:37","modified_gmt":"2026-10-31T03:19:37","slug":"gatemi-announcement-bar","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/gatemi-announcement-bar\/","author":23559004,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Gatemi Announcement Bar","header_author":"Gatemi","header_description":"One announcement bar across the top of the shop \u2014 scheduled, and dismissed without a flash on a cached store.","assets_banners_color":"133394","last_updated":"2026-10-31 03:19:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/gatemi-announcement-bar\/","header_author_uri":"https:\/\/gatemi.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":132,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"gatemi","date":"2026-10-31 03:19:37","revision":3776307}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3776307,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3776307,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3776307,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3776307,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3776307,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3776307,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"The settings screen: the switch, the one bar with its message, button, colours and dates, and the full edition described in plain text.","2":"The bar across the top of the shop, with its message, its button and the close control."}},"plugin_section":[],"plugin_tags":[7553,1290,2647,245872,286],"plugin_category":[45],"plugin_contributors":[279530],"plugin_business_model":[],"class_list":["post-393192","plugin","type-plugin","status-publish","hentry","plugin_tags-announcement-bar","plugin_tags-notification-bar","plugin_tags-promotion","plugin_tags-sale-banner","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-gatemi","plugin_committers-gatemi"],"banners":{"banner":"https:\/\/ps.w.org\/gatemi-announcement-bar\/assets\/banner-772x250.png?rev=3776307","banner_2x":"https:\/\/ps.w.org\/gatemi-announcement-bar\/assets\/banner-1544x500.png?rev=3776307","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/gatemi-announcement-bar\/assets\/icon-128x128.png?rev=3776307","icon_2x":"https:\/\/ps.w.org\/gatemi-announcement-bar\/assets\/icon-256x256.png?rev=3776307","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/gatemi-announcement-bar\/assets\/screenshot-1.png?rev=3776307","caption":"The settings screen: the switch, the one bar with its message, button, colours and dates, and the full edition described in plain text."},{"src":"https:\/\/ps.w.org\/gatemi-announcement-bar\/assets\/screenshot-2.png?rev=3776307","caption":"The bar across the top of the shop, with its message, its button and the close control."}],"raw_content":"<!--section=description-->\n<p>A line across the top of the shop: a sale, a shipping deadline, a delivery\npromise. Shown between the dates you choose, and gone when they pass.<\/p>\n\n<p><strong>A dismissed bar never paints.<\/strong> The bar is server-rendered, so it works\nbefore any script has run and a page cache can serve it. A dismissal is a fact\nabout one visitor, which a cache cannot know, so one tiny snippet in the head\nreads the dismissal cookie and hides the bar before anything paints. A shopper\nwho closed it does not see it flash back on the next page.<\/p>\n\n<p><strong>A bar is text somebody typed, and it is treated that way.<\/strong> The message\npasses <code>wp_kses_post()<\/code> at save <em>and<\/em> at render, because an import bypasses\nthe editor; a <code>javascript:<\/code> destination never becomes a link; and a colour is\n<strong>validated as a colour<\/strong> rather than pasted into a style attribute.<\/p>\n\n<h4>The full edition<\/h4>\n\n<p><a href=\"https:\/\/gatemi.com\/plugins\/announcement-bar-for-woocommerce\/\">Gatemi Announcement Bar for WooCommerce<\/a>\nis a separate plugin, sold on gatemi.com, that adds as many bars as you like\nand shows each one only where it belongs: on chosen pages or everywhere\nexcept the checkout, by what is in the cart (its value, its categories, or\nnothing at all), by the visitor's role, or before a cutoff time for shipping\ndeadlines. It also adds a bar at the foot of the page and one that stays put\nas they scroll.<\/p>\n\n<p>Both editions store their bars the same way, so upgrading keeps everything \u2014\nand anything the full edition wrote is kept here untouched, ready to be\npicked straight back up. This edition edits the first bar and shows one: the\nfirst that is switched on, inside its dates and carries none of the full\nedition's targeting. A bar that carries targeting is not shown here at all,\nbecause this edition cannot judge it and guessing could show it to somebody\nthe merchant excluded.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20a%20page%20cache%3F\"><h3>Does it work with a page cache?<\/h3><\/dt>\n<dd><p>Yes. The bar's markup is the same for every visitor, and a dismissal is read from a cookie in the browser, so a cached page is always correct.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20phone%20home%3F\"><h3>Does this plugin phone home?<\/h3><\/dt>\n<dd><p>No. It makes no HTTP request of any kind.<\/p><\/dd>\n<dt id=\"i%20have%20the%20full%20edition%20too.%20what%20happens%3F\"><h3>I have the full edition too. What happens?<\/h3><\/dt>\n<dd><p>This edition stands down completely and says so on the plugins screen. The two\nshare their storage, so nothing is lost in either direction.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release. One announcement bar across the top of the shop, scheduled between two dates on the store's own clock and decided on the server, so a page cache can serve it.<\/li>\n<li>A dismissed bar never paints: a snippet in the head reads the dismissal cookie before the body exists and the stylesheet hides the bar from a class on the root element, so the markup is the same for everybody.<\/li>\n<li>The message is filtered with wp_kses_post() at save and again at render, the destination goes through esc_url_raw(), and a colour is validated as a colour before it reaches a style attribute.<\/li>\n<\/ul>","raw_excerpt":"Announcement bar for WooCommerce: a sale or shipping notice across the top of the shop, scheduled, and dismissed without a flash on a cached store.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/393192","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=393192"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gatemi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=393192"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=393192"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=393192"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=393192"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=393192"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=393192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}