{"id":262999,"date":"2025-12-11T08:23:28","date_gmt":"2025-12-11T08:23:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/opening-hours-holidays\/"},"modified":"2025-12-11T15:51:31","modified_gmt":"2025-12-11T15:51:31","slug":"bitkit-opening-hours-holidays","status":"publish","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/bitkit-opening-hours-holidays\/","author":23406090,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.1","stable_tag":"1.0.1","tested":"6.9.4","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Bitkit Opening Hours & Holidays","header_author":"Bitkit","header_description":"Opening hours management with \u201cNow open?\u201d logic, special days\/holidays, vacations, block\/shortcode\/widget, and JSON-LD.","assets_banners_color":"cbcbcc","last_updated":"2025-12-11 15:51:31","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.bitkit.ch","rating":0,"author_block_rating":0,"active_installs":10,"downloads":210,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"bitkit","date":"2025-12-11 08:28:53"},"1.0.1":{"tag":"1.0.1","author":"bitkit","date":"2025-12-11 15:51:31"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3418097,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3418097,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3418097,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3418097,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3417658,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3417658,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3417658,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3417658,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3417658,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3417658,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"<strong>Settings screen<\/strong> \u2013 Weekly hours, special days and vacation periods with timezone and formatting options.","2":"<strong>Gutenberg block<\/strong> \u2013 \u201cOpening Hours\u201d block with inspector controls for view, badge, \u201cnext change\u201d, JSON-LD and CTA link.","3":"<strong>Frontend grid view<\/strong> \u2013 Weekly table with \u201cNow open\u201d badge and \u201cnext change\u201d text.","4":"<strong>Grouped view<\/strong> \u2013 Days automatically grouped by identical opening hours."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1220,12431,13422,15082,162],"plugin_category":[43],"plugin_contributors":[252092],"plugin_business_model":[],"class_list":["post-262999","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-business-hours","plugin_tags-holidays","plugin_tags-opening-hours","plugin_tags-widget","plugin_category-customization","plugin_contributors-bitkit","plugin_committers-bitkit"],"banners":{"banner":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/banner-772x250.png?rev=3418097","banner_2x":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/banner-1544x500.png?rev=3418097","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/icon-128x128.gif?rev=3418097","icon_2x":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/icon-256x256.gif?rev=3418097","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/screenshot-1.png?rev=3417658","caption":"<strong>Settings screen<\/strong> \u2013 Weekly hours, special days and vacation periods with timezone and formatting options."},{"src":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/screenshot-2.png?rev=3417658","caption":"<strong>Gutenberg block<\/strong> \u2013 \u201cOpening Hours\u201d block with inspector controls for view, badge, \u201cnext change\u201d, JSON-LD and CTA link."},{"src":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/screenshot-3.png?rev=3417658","caption":"<strong>Frontend grid view<\/strong> \u2013 Weekly table with \u201cNow open\u201d badge and \u201cnext change\u201d text."},{"src":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/screenshot-4.png?rev=3417658","caption":"<strong>Grouped view<\/strong> \u2013 Days automatically grouped by identical opening hours."},{"src":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/screenshot-5.png?rev=3417658","caption":""},{"src":"https:\/\/ps.w.org\/bitkit-opening-hours-holidays\/assets\/screenshot-6.png?rev=3417658","caption":""}],"raw_content":"<!--section=description-->\n<p>Bitkit Opening Hours + Holidays lets you manage business hours, holidays and vacation periods for a single location and display them via shortcode, Gutenberg block or classic widget \u2013 including an optional \u201cNow open?\u201d badge and JSON-LD structured data for search engines.<\/p>\n\n<h4>What this plugin does<\/h4>\n\n<ul>\n<li>Define weekly opening hours (Mon\u2013Sun) with multiple time windows per day.<\/li>\n<li>Add special days (e.g. public holidays, one-off openings\/closings).<\/li>\n<li>Add vacation periods with custom hours or \u201cclosed all day\u201d.<\/li>\n<li>Show a \u201cNow open \/ Now closed\u201d badge with human-readable \u201cnext change\u201d text.<\/li>\n<li>Output JSON-LD (Schema.org) for <code>openingHoursSpecification<\/code> and special opening hours to help search engines display correct business hours.<\/li>\n<li>Render via:\n\n<ul>\n<li>Gutenberg block \u201cOpening Hours\u201d<\/li>\n<li>Classic widget \u201cOpening Hours\u201d<\/li>\n<li>Shortcodes for hours, badge and special days.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p>Free version: one global location (one set of hours) per site.<br \/>\nA Pro add-on for multiple locations and extended features is planned, but the free plugin is fully usable on its own.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Single global location (Free)<\/strong> \u2013 one central timetable for your business.<\/li>\n<li><strong>Weekly opening hours<\/strong>\n\n<ul>\n<li>Multiple time windows per day (e.g. 09:00\u201312:00 and 13:30\u201318:00).<\/li>\n<li>Mark days as closed.<\/li>\n<\/ul><\/li>\n<li><strong>Special days \/ holidays<\/strong>\n\n<ul>\n<li>Override normal hours for specific calendar days.<\/li>\n<li>Mark as closed or set custom hours.<\/li>\n<\/ul><\/li>\n<li><strong>Vacation periods<\/strong>\n\n<ul>\n<li>Configure longer ranges (e.g. company vacation).<\/li>\n<li>Closed or limited hours during the range.<\/li>\n<\/ul><\/li>\n<li><strong>Display options<\/strong>\n\n<ul>\n<li>Show\/hide \u201cNow open?\u201d badge.<\/li>\n<li>Show\/hide \u201cNext change\u201d text (\u201ccloses in 2 hours\u201d, \u2026).<\/li>\n<li>Show\/hide closed days in the weekly grid.<\/li>\n<li>Choose time and date formats (PHP date\/time format).<\/li>\n<\/ul><\/li>\n<li><strong>Views<\/strong>\n\n<ul>\n<li><strong>Grid view<\/strong> \u2013 full weekly overview.<\/li>\n<li><strong>Today view<\/strong> \u2013 only show today\u2019s opening hours.<\/li>\n<li><strong>Compact view<\/strong> \u2013 badge + short line of text (for tight spaces, sidebars, footers).<\/li>\n<\/ul><\/li>\n<li><strong>Structured data<\/strong>\n\n<ul>\n<li>Outputs Schema.org JSON-LD for <code>LocalBusiness<\/code> with weekly and special opening hours.<\/li>\n<li>Uses your site title and home URL by default.<\/li>\n<\/ul><\/li>\n<li><strong>Editor integrations<\/strong>\n\n<ul>\n<li>Gutenberg block with inspector controls for view, badge, \u201cnext change\u201d, JSON-LD and optional CTA link.<\/li>\n<li>Classic widget for legacy themes.<\/li>\n<\/ul><\/li>\n<li><strong>Translations<\/strong>\n\n<ul>\n<li>Ships with initial translations: de_DE, de_CH, fr_FR, it_IT, es_ES, nl_NL, da_DK, fi, sv_SE, nb_NO, cs_CZ, pl_PL, pt_PT, ru_RU, ja, zh_CN.<\/li>\n<li>Fully ready for translate.wordpress.org.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<h3>Shortcodes<\/h3>\n\n<p>All shortcodes automatically use the global settings from <strong>Settings \u2192 Opening Hours<\/strong>.<\/p>\n\n<h4>Main output (grid view)<\/h4>\n\n<pre><code>[bkohh_opening_hours]  \n<\/code><\/pre>\n\n<p>Renders the weekly grid with your current settings.<\/p>\n\n<p>Optional attributes:<\/p>\n\n<ul>\n<li><code>timezone<\/code> \u2013 override configured timezone (e.g. <code>timezone=\"Europe\/Zurich\"<\/code>).<\/li>\n<li><code>format_time<\/code> \u2013 override time format (<code>H:i<\/code>, <code>g:i A<\/code>, \u2026).<\/li>\n<li><code>format_date<\/code> \u2013 override date format for any dates that are shown.<\/li>\n<li><code>jsonld<\/code> \u2013 <code>1<\/code> (default) to append JSON-LD, <code>0<\/code> to disable.<\/li>\n<\/ul>\n\n<h4>\u201cNow open?\u201d badge<\/h4>\n\n<pre><code>[bkohh_open_badge]\n<\/code><\/pre>\n\n<p>Outputs a compact block with:<\/p>\n\n<ul>\n<li>Badge: \u201cNow open\u201d \/ \u201cNow closed\u201d.<\/li>\n<li>Optional \u201cnext change\u201d text (e.g. \u201ccloses in 45 min\u201d).<\/li>\n<li>Optional CTA link (label + URL) configured via shortcode or block\/widget.<\/li>\n<\/ul>\n\n<p>Respects the timezone, formats and display options from the settings.<\/p>\n\n<h4>Upcoming special days<\/h4>\n\n<pre><code>[bkohh_special_days]\n<\/code><\/pre>\n\n<p>Shows a small list of upcoming special days\/holidays.<\/p>\n\n<p>Useful attributes:<\/p>\n\n<ul>\n<li><code>limit<\/code> \u2013 maximum number of items to show (default: <code>5<\/code>).<\/li>\n<li><code>empty_text<\/code> \u2013 text to display if there are no upcoming special days.<\/li>\n<li><code>timezone<\/code>, <code>format_date<\/code>, <code>format_time<\/code> \u2013 overrides for date\/time output.<\/li>\n<\/ul>\n\n<h4>Grouped weekly hours<\/h4>\n\n<pre><code>[bkohh_grouped_hours]\n<\/code><\/pre>\n\n<p>Groups days with identical hours into ranges (e.g. \u201cMon\u2013Fri 09:00\u201318:00, Sat 10:00\u201314:00\u201d).<br \/>\nRespects the global display settings (badge, next change, closed days).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder <code>opening-hours-holidays<\/code> to <code>\/wp-content\/plugins\/<\/code> or install it via the WordPress plugin installer.<\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 Opening Hours<\/strong> to configure:\n\n<ul>\n<li>Timezone, time\/date formats<\/li>\n<li>Weekly opening hours<\/li>\n<li>Special days \/ holidays<\/li>\n<li>Vacation periods<\/li>\n<li>Display options (badge, next change, show closed days)<\/li>\n<\/ul><\/li>\n<li>Add the output on the frontend using:\n\n<ul>\n<li>The <strong>\u201cOpening Hours\u201d<\/strong> block in the block editor, or<\/li>\n<li>The classic widget <strong>\u201cOpening Hours\u201d<\/strong>, or<\/li>\n<li>One of the shortcodes described below.<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='does%20it%20support%20multiple%20locations%3F'><h3>Does it support multiple locations?<\/h3><\/dt>\n<dd><p>The free version is intentionally kept simple and manages one global set of opening hours per site.<br \/>\nSupport for multiple locations (each with its own timetable, shortcodes and JSON-LD) is planned for a separate Pro add-on.<\/p><\/dd>\n<dt id='what%20schema.org%20type%20is%20used%20for%20json-ld%3F'><h3>What schema.org type is used for JSON-LD?<\/h3><\/dt>\n<dd><p>By default the plugin outputs JSON-LD using the <code>LocalBusiness<\/code> type, your site title as the name and the home URL as the <code>@id<\/code>\/<code>url<\/code>. The weekly hours and special days are mapped to <code>openingHoursSpecification<\/code> and <code>specialOpeningHoursSpecification<\/code>.<\/p><\/dd>\n<dt id='will%20it%20work%20with%20caching%20plugins%3F'><h3>Will it work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes. The \u201copen now\u201d status is calculated in PHP and cached internally for a short time using WordPress transients. When you save new opening hours, the plugin automatically invalidates its own cache.<br \/>\nBe aware that very aggressive full-page caching can still delay the visible change between \u201copen\u201d and \u201cclosed\u201d if the cached page is not refreshed.<\/p><\/dd>\n<dt id='can%20i%20change%20the%20timezone%20or%20time%20format%3F'><h3>Can I change the timezone or time format?<\/h3><\/dt>\n<dd><p>Yes. You can set the timezone and formats on the settings screen, and some shortcodes also accept optional <code>timezone<\/code>, <code>format_time<\/code> and <code>format_date<\/code> attributes. The plugin uses PHP\u2019s <code>DateTime<\/code> internally.<\/p><\/dd>\n<dt id='which%20languages%20are%20supported%3F'><h3>Which languages are supported?<\/h3><\/dt>\n<dd><p>The plugin is fully translation-ready and ships with several <code>.po\/.mo<\/code> files (German, French, Italian, Spanish, Dutch, Danish, Finnish, Swedish, Norwegian (Bokm\u00e5l), Czech, Polish, Portuguese, Russian, Japanese, Simplified Chinese).<br \/>\nOnce the plugin is published on wordpress.org, translations will be managed via translate.wordpress.org as well.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added AM\/PM selection for 12-hour time formats (dropdown + logic).<\/li>\n<li>Improved CSS for front-end output.<\/li>\n<li>Added validation for special days: prevent past dates and duplicate entries with clear error messages.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Single global location with weekly opening hours.<\/li>\n<li>Special days\/holidays and vacation periods.<\/li>\n<li>\u201cNow open?\u201d badge with human-readable \u201cnext change\u201d.<\/li>\n<li>Gutenberg block, classic widget and multiple shortcodes.<\/li>\n<li>JSON-LD output for LocalBusiness opening hours.<\/li>\n<li>Includes several ready-to-use translations.<\/li>\n<\/ul>","raw_excerpt":"Manage and display business opening hours, holidays and vacation periods with shortcodes, a Gutenberg block, a widget and JSON-LD structured data.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/262999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=262999"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bitkit"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=262999"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=262999"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=262999"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=262999"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=262999"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=262999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}