DYNAMIC OPENING HOURS

The Dynamic Opening Hours widget builds a Google-style schedule block from your meta data. Point it at JetEngine, ACF, or user meta fields and it automatically formats each day, highlights today, and calculates whether the business is currently open. Leave the raw strings exactly as you receive them - smart parsing handles both 24-hour and AM/PM formats.


USAGE & SCOPE

Accepted time formats inside the meta string:


Settings Icon

DATA & DAY CONTROLS

Tell the widget where your schedule lives and how each day should read.

  • Query Source: Choose listing grid object, current post, or current user.
  • Title: Optional heading above the schedule (default "Opening hours").
  • Description: WYSIWYG field that appears under the title (or alone if the title is empty).
  • AM / PM Labels: Global overrides for "AM" and "PM". Useful for localisation (e.g. "de" / "du").
  • Meta Field IDs: Seven sections (Monday-Sunday) where you map the meta key that stores opening hours for that day.
  • Per-day Labels: Customise the display name of each weekday; defaults honour the site language.
  • Fallback Text: Message used when no day returns data. When filled, it replaces the entire widget output.

Reminder: Empty or missing meta marks the day as closed. The widget also treats strings starting with closed or off (case-insensitive) as closed.


Display Icon

DISPLAY LOGIC

Switch between status badge and full weekly list layouts.

  • Display Type:
    • Status badge - render only the open/closed badge (ideal for compact headers).
    • Weekly list - show the full day table, with optional status badge above the list.
  • Hide Status Badge: Available in weekly mode if you only want the table.
  • Open/Closed Text: Custom strings for the badge (e.g. "We are open", "Closed for today").
  • Today Highlight: The widget flags the current weekday and applies highlight styling even when the business is closed.
  • Raw Value Fallback: If the parser cannot interpret a string, the original meta value is displayed so visitors still see the stored text.
  • Empty State: When no day has data the widget either renders the fallback message or hides itself entirely.

Style Icon

STYLE OPTIONS

Fine-tune typography, spacing, and highlight colours.

  • Title Styling: Typography, color, border, and padding controls.
  • Description Styling: Separate typography and color controls for the text under the title.
  • Status Badge: Separate typography, padding, border radius, background, and text colours for open vs closed states.
  • Day Rows: Typography controls for labels and time values, row padding, borders, gap, plus optional dividers with adjustable thickness, colour, and spacing.
  • Even/Odd Styling: Assign alternating background and text colours without overriding the today highlight.
  • Highlight (Today): Dedicated text colour, typography, and background overrides ensure today's row stands out.

STEP-BY-STEP SETUP

  1. Map your meta fields. In Content -> Monday-Sunday sections, enter the meta key that stores each day’s schedule.
  2. Adjust labels. Override the title, weekday names, or AM/PM strings if localisation requires it.
  3. Add messaging. Optionally fill the description under the title and the fallback text for empty schedules.
  4. Choose the layout. Pick Status badge or Weekly list and decide whether the badge should show alongside the table.
  5. Style the widget. Configure badge colours, description typography, row padding, dividers, and highlight colours to match your branding.
  6. Verify the output. Load the page on the frontend and confirm that the correct day is highlighted and the status badge reflects the current time.

TIPS & EDGE CASES