Business Hours & Holiday Schedule Manager is a business hours plugin for WordPress that shows your customers exactly when you are open. Set your weekly opening hours, add holiday and special-date hours, and display a live Open Now / Closed badge on any page. It also adds Schema.org opening hours mar
PricingFree downloadThe WordPress.org download is free. Pro versions, add-ons or external services may cost extra.
CompatibilityRequires WordPress 6.2 and PHP 7.4.
SourceWordPress plugins · Nov 15, 2026
01 / Source details
Aboutthistool.
Business Hours & Holiday Schedule Manager is a business hours plugin for WordPress that shows your customers exactly when you are open. Set your weekly opening hours, add holiday and special-date hours, and display a live Open Now / Closed badge on any page. It also adds Schema.org opening hours markup so search engines can read your hours.
It suits local shops, restaurants, cafés, clinics, salons, agencies and any other business with set opening times. No coding is needed, and the plugin makes no external requests.
🎥 See Business Hours in Action:
📖 View Documentation | 🌐 WebTend
What you can do with it
Build a weekly opening hours schedule with a switch for each day
Add up to 4 time slots per day for lunch breaks and split shifts
Show a live open now / closed status badge that refreshes without reloading the page
Set holiday hours and special dates: closed all day, or custom hours, for one day, a date range, or every year
Use your own timezone, so the status never depends on the server clock
Output JSON-LD (business type, address, phone, openingHours and holiday hours) for search engines
Place your hours with a Gutenberg block , a classic widget, a shortcode or an Elementor widget
Choose a full weekly table, a one-line today’s hours view, or just the status badge
Optionally show a closed notice bar across your site while you are closed
Close right now with one click from the admin bar ( temporary closure ), without touching your schedule
Show content only while you are open or closed with [webtend_if_open] and [webtend_if_closed]
Rename the Open and Closed labels and choose 12-hour or 24-hour time
Weekly schedule builder
Toggle each day on or off and set its opening and closing times. Quick-fill presets (Mon–Fri 9–5, Mon–Sat 10–6, 7 days 9–9) set up a standard week in one click, and “Apply to all days” or “Copy to Mon–Fri” saves retyping when several days share the same hours.
Visitors see whether you are open right now and when that changes next, for example “Closes at 5:00 PM”. The badge is rendered on the server and refreshed with a lightweight AJAX request. The refresh interval is 60 seconds by default and can be turned off in Settings.
Holiday and special dates manager
Holidays always override the weekly schedule. Mark a date as closed, or give it reduced hours such as Christmas Eve 10:00–14:00. Add an end date for a multi-day closure such as a winter break, and switch on “Repeat every year” so you only enter Christmas once. Search the list, filter by month and page through large lists.
Schema.org opening hours markup
The plugin prints a single JSON-LD block with your business name, type, URL, phone number, address, price range, logo and openingHours , built from your weekly schedule. Upcoming holidays are added as special opening hours. Fill in Settings → Business Details and the markup is ready, with no code. Search engines may use structured data like this to understand your business. You can also change the type with a filter, or turn the markup off.
Closed notice bar
Turn it on under Settings → Closed Notice Bar to show a thin bar at the top of every page while you are closed, for example “We’re currently closed. Opens tomorrow at 9:00 AM”. It prints nothing while you are open, is off by default, and can be dismissed by the visitor for the rest of their browser session.
Temporary closure
Power cut, bad weather, someone off sick? Use the Business Hours menu in the admin bar (or Settings → Temporary Closure ) and choose Close for the rest of today or Close until I reopen . Your site shows as closed straight away, with an optional message, and your weekly schedule and holidays stay exactly as they are. Click Reopen now to go back to normal. Only administrators can use it.
Show content only when open or closed
Wrap anything in [webtend_if_open] or [webtend_if_closed] :
[webtend_if_open]Call us now on 555-0100[/webtend_if_open] [webtend_if_closed]We are closed right now. Leave a message and we will reply tomorrow.[/webtend_if_closed]
The content is decided on the server when the page is built, so with full-page caching it reflects the moment the page was cached.
Ways to display your hours
Gutenberg block : “Business Hours”, with a live preview in the editor
Classic widget : add it from Appearance → Widgets
Shortcode : [webtend_business_hours] , [webtend_business_hours display="today"] or [webtend_business_hours display="status"]
Elementor widget : appears automatically when Elementor 3.5 or later is active
Works with block themes, classic themes and page builders. Front-end styles and scripts only load on pages that show your hours.
Built for speed, accessibility and privacy
No jQuery: plain JavaScript only
No external requests, tracking, or third-party services
Accessible markup: the status badge is announced to screen readers, hours tables use proper row headers, and admin controls have visible keyboard focus
Translation-ready with a .pot file included
Removes its options and database table when you delete the plugin
For developers
webtend_bh_output_schema : return false to skip the JSON-LD block, for example on specific pages
webtend_bh_schema_type : change LocalBusiness to another Schema.org type such as Restaurant
webtend_bh_schema_data : add or change properties such as address, telephone or geo
webtend_bh_show_notice_bar : return false to hide the closed-notice bar on specific pages
webtend_bh_is_open : change the open/closed decision used by [webtend_if_open] and [webtend_if_closed]
Front-end CSS custom properties ( --wbh-today-color , --wbh-font-size , --wbh-radius , --wbh-row-padding , --wbh-badge-radius ) for theming without overrides
See it in action
Screenshots & previews.
Weekly schedule builder — toggle days, add multiple time slots for lunch breaksLive open/closed status badge on the frontendHoliday manager — add closed dates or custom hours for special datesSettings panel — timezone, labels, Schema.org toggleGutenberg block with live editor previewClassic widget in the widget editor
02 / Source details
Gettingstarted.
01In WordPress, go to Plugins → Add New and search for “Business Hours & Holiday Schedule Manager”, or upload the webtend-business-hours folder to /wp-content/plugins/ .
02Click Activate .
03Open Business Hours in the admin sidebar.
04On Settings , choose your timezone first.
05On Weekly Schedule , set your opening hours and click Save schedule .
06On Holidays , add any closed dates or reduced-hours days.
07Add the Business Hours block, the widget, or the shortcode [webtend_business_hours] to a page.
03 / Source details
Frequently asked questions.
How do I add business hours to my WordPress website?
Activate the plugin, set your weekly hours under Business Hours → Weekly Schedule , then add the Business Hours block to a page, or paste the shortcode [webtend_business_hours] anywhere.
How do I show an “Open Now” badge?
The live status badge is shown by default with the block, widget, shortcode and Elementor widget. To hide it, use [webtend_business_hours show_status="false"] or switch off “Show live status badge” in the block or widget settings.
Can I show a lunch break or split shifts?
Yes. Each day supports up to 4 time slots. For example, add 09:00–12:00 and 13:00–17:00 to show a lunch break.
How do I set holiday hours?
Go to Business Hours → Holidays , pick the date and either leave “Closed all day” on or turn it off to enter custom opening and closing times. A holiday replaces the weekly schedule for that date.
Does the status use my local time?
Yes. Choose your timezone under Settings . All open/closed calculations use it, not the server clock.
How do I close the business quickly without adding a holiday?
Use the Business Hours menu in the admin bar and click Close for the rest of today or Close until I reopen . You can add a message under Settings → Temporary Closure . Click Reopen now to end it. Your schedule and holidays are not changed.
How do I show a phone number or button only while I am open?
Wrap it in [webtend_if_open]…[/webtend_if_open] , and use [webtend_if_closed]…[/webtend_if_closed] for the closed version. With full-page caching, the result reflects the moment the page was cached.
Can I put one conditional shortcode inside another?
Not of the same name, because WordPress does not support that for shortcodes. You can put other shortcodes, including [webtend_business_hours] , inside them.
Can I add a holiday that lasts several days?
Yes. On Business Hours → Holidays , set the date and an optional End date . Every day in the range uses the holiday setting. You can also switch on Repeat every year so it applies to the same dates each year.
How do I show only today’s hours or just the Open Now badge?
Use [webtend_business_hours display="today"] for one line with today’s hours, or [webtend_business_hours display="status"] for the badge alone. The block, widget and Elementor widget have a Layout option with the same choices.
How do I show a message when the business is closed?
Turn on Settings → Closed Notice Bar . The bar appears at the top of every page only while you are closed and includes the next opening time. If you use full-page caching, the bar reflects the time the page was cached.
How does the live status update?
A lightweight AJAX request refreshes the badge every 60 seconds by default. Change the interval under Settings , or set it to 0 to turn automatic refresh off.
Does it add Schema.org opening hours markup?
Yes. The plugin outputs JSON-LD with your business type, name, address, phone number, openingHours (one entry per time slot) and your upcoming holidays as specialOpeningHoursSpecification . Set the details under Settings → Business Details , and turn the markup or the holiday part off under Settings . The plugin cannot guarantee how any search engine will use the data.
How do I add my address and phone number to the schema?
Go to Business Hours → Settings → Business Details and Address , fill in your details and save. Developers can add anything else, such as social profile links, with the webtend_bh_schema_data filter:
Does it work with block themes, page builders and Elementor?
Yes. The block, widget and shortcode work with block themes and classic themes. The Elementor widget registers only when Elementor 3.5 or later is active; Elementor is not required.
Does it work with WooCommerce?
Yes. It runs alongside WooCommerce without conflicts. WooCommerce is not required.
Can I manage hours for more than one location?
Not currently. The plugin manages one schedule per site (each site in a multisite network has its own).
Does it contact any external server?
No. There are no remote requests, tracking, or external fonts or scripts.
What happens to my data if I delete the plugin?
Deleting the plugin from the Plugins screen removes its options and the holidays database table. Your pages are not changed, but a leftover shortcode will show as plain text.
Where can I get support?
Post in the plugin support forum . We aim to reply within 2 business days.
FinderPress Media Auditor helps site administrators scan for broken images, missing Media Library files, unreachable media URLs, and other media issues across WordPress content. Use it to audit images, video, audio, PDFs, featured images, and attachment files without sending scan data to an external
The Accepted Payment Methods plugin is a straightforward, lightweight solution that enhances your website by displaying visually appealing icons of the payment methods you accept. This plugin is ideal for a variety of websites, including e-commerce platforms, service-oriented websites, and informati