Today's Hours
Wordpress plugin to display today's business hours. For highly variable schedules.
by Carsten Bach · github.com/carstingaxion/todays-hours-plugin
Install
The author publishes release zips, so WP-CLI can install straight from GitHub:
wp plugin install https://github.com/carstingaxion/todays-hours-plugin/releases/download/2.0.2/todays-hours-plugin.zipReadme
Business Hours Block
Contributors: carstenbach & WordPress Telex
Tags: business hours, schedule, opening times, block
Tested up to: 7.0
Stable tag: 2.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Displays the current day's business hours or a full weekly schedule. Supports configurable seasons, holidays, and multiple time slots per day.
Description
A Gutenberg block that shows business hours on the front end of a WordPress site. Schedule data (seasons and holidays) is stored as site-wide settings and shared across all block instances. Each block instance has its own display settings.
Features
Seasons
- Define named time periods (e.g. "Fall Semester", "Summer Break") with start and end dates.
- Each season has a weekly schedule with per-day hours.
- Each day supports multiple time slots (e.g. 8:00 AM -- 11:00 AM and 1:00 PM -- 5:00 PM).
- Leave all slots blank for a day to mark it as closed.
Holidays / Exceptions
- Override season schedules for specific date ranges.
- Holidays can be year-specific (e.g. 2025-12-25) or recurring every year (month and day only).
- Each holiday supports multiple time slots, or can be left blank to indicate a full-day closure.
- When a holiday applies, its hours replace the season hours for that day.
iCal Import
- Import holidays from
.ics(iCal) files directly in the block inspector panel. - The file is read client-side and parsed server-side via a REST endpoint.
- Parsed events are merged into the existing holidays list.
- The uploaded file is not persisted to the media library.
- All-day events are imported as closed holidays. Timed events are imported with their start and end times as a single time slot.
Display Modes
- Full week schedule -- Shows all seven days of the current season's schedule. Today's row is highlighted. Holidays are checked per-day across the displayed week.
- Today's hours only -- Shows only the current day's hours (or a closed message).
Display Options
- Show today's date -- Displays the current date above the schedule, formatted according to the WordPress date format setting.
- Show reason when closed -- When a holiday causes a closure, displays the holiday name (e.g. "Closed for Thanksgiving"). Works in both display modes.
- Use "Noon" and "Midnight" -- Replaces "12:00 AM" with "Midnight" and "12:00 PM" with "Noon".
- Hide weekend days -- Removes Saturday and Sunday from both the week view and the day view.
Localization
- Respects the WordPress
time_formatsetting for time display on the front end. - Respects the WordPress
date_formatsetting for the date display. - Respects the WordPress
start_of_weeksetting for day ordering in both the editor and front end. - Day names are localized using
wp_date()(front end) anddateI18n()from@wordpress/date(editor), so they appear in the site's configured language. - All plugin strings use the
telex-hours-blocktext domain.
Site-Wide Data
- Seasons and holidays are stored as WordPress site options (
telex_hours_seasonsandtelex_hours_holidays). - All block instances on the site share the same schedule data.
- Any block instance's inspector panel can edit the shared seasons and holidays.
- Each block instance retains its own display settings (mode, date visibility, friendly labels, hide weekends).
Front-End Output
- Server-side rendered on each page load.
- Outputs semantic HTML using
<dl>/<dt>/<dd>with<time>elements and properdatetimeattributes. - Includes a JSON-LD `
Read the full README on GitHub →