{"id":389406,"date":"2026-10-23T17:10:53","date_gmt":"2026-10-23T17:10:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/horair-opening-hours\/"},"modified":"2026-10-23T17:10:32","modified_gmt":"2026-10-23T17:10:32","slug":"horair","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/horair\/","author":23589122,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Horair \u2013 Opening hours","header_author":"Horair","header_description":"Your opening hours on your website: weekly and special hours, block and [horair_hours] shortcode, live open\/closed badge, schema.org data. Optional two-way sync with Google and Facebook through Horair.","assets_banners_color":"6f9de9","last_updated":"2026-10-23 17:10:32","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/horair.com\/wordpress\/","header_author_uri":"https:\/\/horair.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","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"horair","date":"2026-10-23 17:10:32","revision":3762099}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3762099,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3762099,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3762099,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500-fr_FR.png":{"filename":"banner-1544x500-fr_FR.png","revision":3762099,"resolution":"1544x500","location":"assets","locale":"fr_FR","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3762099,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-fr_FR.png":{"filename":"banner-772x250-fr_FR.png","revision":3762099,"resolution":"772x250","location":"assets","locale":"fr_FR","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3762099,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"horair\/hours":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"horair\/hours","title":"Opening hours","category":"widgets","icon":"clock","description":"Your opening hours and upcoming special hours, always up to date.","keywords":["horair","hours","schedule"],"textdomain":"horair","attributes":{"group":{"type":"boolean","default":false},"specials":{"type":"boolean","default":true}},"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true}},"editorScript":"file:.\/index.js","style":"file:.\/style.css"}},"tagged_versions":["1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3762099,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3762099,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3762099,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3762099,"resolution":"4","location":"assets","locale":"","width":2560,"height":1600},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3762099,"resolution":"5","location":"assets","locale":"","width":2560,"height":1600},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3762099,"resolution":"6","location":"assets","locale":"","width":2560,"height":1600},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3762099,"resolution":"7","location":"assets","locale":"","width":2560,"height":1600},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3762099,"resolution":"8","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"Enter your weekly hours (two time slots per day) and special opening hours, with or without a Horair account.","2":"Holidays, closures and events: one date or a period, closed all day or special hours, with a reason.","3":"The \"Opening hours\" block in the block editor: group identical days, show or hide special hours.","4":"On your website: grouped days and upcoming special hours, styled by your theme.","5":"In the footer of every page (block theme footer, widget or shortcode).","6":"Block and shortcode options, with a live preview of both layouts.","7":"Connected to Horair: edit here, in the Horair app or by WhatsApp; every change is published everywhere.","8":"In Horair: several websites per location (e-shop, blog\u2026), each kept in sync."}},"plugin_section":[],"plugin_tags":[12431,1122,15082,1117,200749],"plugin_category":[55],"plugin_contributors":[288117],"plugin_business_model":[],"class_list":["post-389406","plugin","type-plugin","status-publish","hentry","plugin_tags-business-hours","plugin_tags-local-seo","plugin_tags-opening-hours","plugin_tags-schema","plugin_tags-store-hours","plugin_category-seo-and-marketing","plugin_contributors-horair","plugin_committers-horair"],"banners":{"banner":"https:\/\/ps.w.org\/horair\/assets\/banner-772x250.png?rev=3762099","banner_2x":"https:\/\/ps.w.org\/horair\/assets\/banner-1544x500.png?rev=3762099","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/horair\/assets\/icon.svg?rev=3762099","icon":"https:\/\/ps.w.org\/horair\/assets\/icon.svg?rev=3762099","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-1.png?rev=3762099","caption":"Enter your weekly hours (two time slots per day) and special opening hours, with or without a Horair account."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-2.png?rev=3762099","caption":"Holidays, closures and events: one date or a period, closed all day or special hours, with a reason."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-3.png?rev=3762099","caption":"The \"Opening hours\" block in the block editor: group identical days, show or hide special hours."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-4.png?rev=3762099","caption":"On your website: grouped days and upcoming special hours, styled by your theme."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-5.png?rev=3762099","caption":"In the footer of every page (block theme footer, widget or shortcode)."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-6.png?rev=3762099","caption":"Block and shortcode options, with a live preview of both layouts."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-7.png?rev=3762099","caption":"Connected to Horair: edit here, in the Horair app or by WhatsApp; every change is published everywhere."},{"src":"https:\/\/ps.w.org\/horair\/assets\/screenshot-8.png?rev=3762099","caption":"In Horair: several websites per location (e-shop, blog\u2026), each kept in sync."}],"raw_content":"<!--section=description-->\n<p><strong>Works on its own.<\/strong> Enter your weekly hours (two time slots per day for a lunch break) and your special opening hours (holidays, closures, events) in the \"Opening hours\" menu, then display them anywhere:<\/p>\n\n<ul>\n<li><strong>Block<\/strong> \"Opening hours\" in the block editor, with options in the sidebar.<\/li>\n<li><strong>Shortcode<\/strong> <code>[horair_hours]<\/code> for widgets, page builders (Elementor, Divi\u2026) and classic themes: <code>group=\"1\"<\/code> merges identical days (\"Monday \u2013 Friday 09:00\u201319:00\"), <code>specials=\"0\"<\/code> hides the special hours.<\/li>\n<li><strong>Open\/closed badge<\/strong>: a live sign telling visitors whether you are open right now, floating in a corner of every page or placed with <code>[horair_badge]<\/code>. 27 looks (neon, door sign, bakery, butcher, caf\u00e9\u2026), seasonal decorations, a click shows the week. Drawn in the browser from the hours on your site.<\/li>\n<li><strong>SEO<\/strong>: adds <code>openingHoursSpecification<\/code> to the business declared by Yoast SEO \/ Yoast Local SEO \/ Rank Math, or declares a <code>LocalBusiness<\/code> when none exists (can be turned off).<\/li>\n<li><strong>Page caches purged<\/strong> on every change: WP Rocket, W3 Total Cache, WP Super Cache, LiteSpeed Cache, WP Fastest Cache, SiteGround Optimizer, Breeze, Nginx Helper.<\/li>\n<\/ul>\n\n<p><strong>Even better with <a href=\"https:\/\/horair.com\">Horair<\/a><\/strong> (optional, 14-day free trial): change your hours once, and Google Business Profile, Facebook and this website follow.<\/p>\n\n<ul>\n<li>Connect in one step: paste the key copied from Horair (location &gt; Channels &gt; Website plugin). Several websites can be connected to the same location (an e-shop and a blog\u2026).<\/li>\n<li>Both ways: edit your hours here, in the Horair app or by WhatsApp; every change is published everywhere.<\/li>\n<li>Public and school holidays suggested in advance.<\/li>\n<\/ul>\n\n<p>Ready for translation on translate.wordpress.org.<\/p>\n\n<p>Developers: <code>do_action('horair_hours_updated', $hours)<\/code> fires on every change; <code>horair_state()['data']<\/code> holds the current hours. Markup classes: <code>.horair-hours<\/code>, <code>.horair-hours__table<\/code>, <code>.horair-hours__special<\/code>, <code>.horair-badge-spot<\/code>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin works without any external service. When you choose to connect it to Horair (https:\/\/horair.com) by pasting a connection key, it talks to the Horair API:<\/p>\n\n<ul>\n<li>On connection, resynchronization and disconnection: it sends the key and this site's webhook address (<code>\/wp-json\/horair\/v1\/webhook<\/code>) to <code>https:\/\/horair.com\/api\/public\/webhooks\/connect<\/code> (or <code>\/disconnect<\/code>).<\/li>\n<li>When you save your hours while connected: it sends the hours to <code>https:\/\/horair.com\/api\/public\/webhooks\/hours<\/code>.<\/li>\n<li>Horair then sends every hours change to the webhook address, signed with HMAC-SHA256. If a security plugin disables the REST API for visitors, allow the <code>horair\/v1<\/code> route.<\/li>\n<\/ul>\n\n<p>The open\/closed badge script and its fonts are bundled with the plugin: visitors' browsers never contact Horair. No visitor data is ever sent. Horair terms: https:\/\/horair.com\/terms \u2013 privacy policy: https:\/\/horair.com\/privacy<\/p>\n\n<h3>Credits<\/h3>\n\n<p>The open\/closed badge uses the Pacifico, Bebas Neue, Montserrat and Oswald fonts, under the SIL Open Font License 1.1 (<code>assets\/widget\/fonts\/OFL.txt<\/code>).<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20horair%20account%3F\"><h3>Do I need a Horair account?<\/h3><\/dt>\n<dd><p>No. The plugin manages and displays your hours on its own. Horair adds the sync with Google, Facebook and your other websites.<\/p><\/dd>\n<dt id=\"which%20timezone%20is%20used%3F\"><h3>Which timezone is used?<\/h3><\/dt>\n<dd><p>Your WordPress timezone (Settings &gt; General), or your location's timezone in Horair once connected. Hours are always shown as local time.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Opening hours block: spacing, font size and alignment set in the block settings now show on the site, not only in the editor.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: weekly and special opening hours, \"Opening hours\" block and <code>[horair_hours]<\/code> shortcode (detailed or grouped days), schema.org opening hours (Yoast SEO \/ Rank Math or own LocalBusiness), page cache purge.<\/li>\n<li>Live open\/closed badge: on every page or with <code>[horair_badge]<\/code>, 27 looks, set in the plugin or in Horair when connected.<\/li>\n<li>Optional Horair connection: two-way sync with Google, Facebook and your other websites.<\/li>\n<li>Disconnecting or uninstalling the plugin tells Horair to stop sending the hours (the key is revoked).<\/li>\n<li>Translations: French, German, Spanish, Italian.<\/li>\n<\/ul>","raw_excerpt":"Opening hours, holidays and a live open\/closed badge on your site: block, shortcode, schema.org. Optional sync with Google and Facebook via Horair.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/389406","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=389406"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/horair"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=389406"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=389406"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=389406"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=389406"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=389406"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=389406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}