{"id":386806,"date":"2026-10-17T01:23:20","date_gmt":"2026-10-17T01:23:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ingotforgre-opening-hours-indicator\/"},"modified":"2026-10-18T18:23:18","modified_gmt":"2026-10-18T18:23:18","slug":"ingotforge-opening-hours-indicator","status":"publish","type":"plugin","link":"https:\/\/et.wordpress.org\/plugins\/ingotforge-opening-hours-indicator\/","author":23481317,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1.1","stable_tag":"2.1.1","tested":"7.1.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"IngotForge Opening Hours Indicator","header_author":"ingotpress","header_description":"Timezone-aware business status, weekly hours, holiday integrations and optional clocks.","assets_banners_color":"849292","last_updated":"2026-10-18 18:23:18","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ingotforge.wordpress.com","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/ingotforge-opening-hours-indicator\/","header_author_uri":"https:\/\/ingotforge.wordpress.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":127,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.1":{"tag":"2.1.1","author":"ingotpress","date":"2026-10-18 18:23:18","revision":3753451}},"upgrade_notice":{"2.1.1":"<p>Back up before updating. Check saved shortcodes and custom integrations against the supported names. Schedules are retained; page content is not rewritten. For earlier folder layouts, follow TECHNICAL-GUIDE.md without uninstalling the old copy.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3753810,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3753810,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3753810,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3753810,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[12431,7162,6324,15082,9698],"plugin_category":[40],"plugin_contributors":[269642],"plugin_business_model":[],"class_list":["post-386806","plugin","type-plugin","status-publish","hentry","plugin_tags-business-hours","plugin_tags-clock","plugin_tags-holiday","plugin_tags-opening-hours","plugin_tags-timezone","plugin_category-calendar-and-events","plugin_contributors-ingotpress","plugin_committers-ingotpress"],"banners":{"banner":"https:\/\/ps.w.org\/ingotforge-opening-hours-indicator\/assets\/banner-772x250.png?rev=3753810","banner_2x":"https:\/\/ps.w.org\/ingotforge-opening-hours-indicator\/assets\/banner-1544x500.png?rev=3753810","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ingotforge-opening-hours-indicator\/assets\/icon-128x128.png?rev=3753810","icon_2x":"https:\/\/ps.w.org\/ingotforge-opening-hours-indicator\/assets\/icon-256x256.png?rev=3753810","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Show when your business is open. Create a schedule and display its status, weekly timetable or local clock with shortcodes.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Independent schedules and timezones for multiple locations.<\/li>\n<li>Split shifts, overnight hours and 24-hour opening.<\/li>\n<li>Manual holidays, recurring closures, special hours and temporary overrides.<\/li>\n<li>Custom labels, colours, typography and indicator styles.<\/li>\n<li>Optional next opening or closing time and live status updates.<\/li>\n<li>Optional holiday and time services; no external account is needed for manual schedules.<\/li>\n<li>Schedule duplication, import\/export and a built-in manual.<\/li>\n<\/ul>\n\n<p>Scripts and styles are included locally, with no CDN dependency or telemetry. Instructions: <strong>Opening Hours &gt; Manual &amp; tutorials<\/strong>.<\/p>\n\n<h3>External services<\/h3>\n\n<p>All integrations are optional and require administrator authorization. Requests run on an administrator refresh or a scheduled WordPress task, not from visitors' browsers or normal shortcode display.<\/p>\n\n<p>Holiday requests send the configured country, optional subdivision, year\/date and relevant filters; clock requests send a UTC timezone. Credentials are included when required. Operators also receive your server's IP address, request time and plugin-version user agent. The plugin does not add visitor IPs, cookies, names, email addresses or page content to these requests.<\/p>\n\n<p>Choose a plan permitting your intended use and caching, including any commercial-use, sponsorship or attribution obligations. Credentials are not supplied. Cached results expire; keep scheduled tasks working and clear caches on subscription cancellation. Providers govern their own logs and retention.<\/p>\n\n<p><strong>Nager.Date \/ Nager.Holidays - holiday dates<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/nagerholidays.com\/api\/v4\/Holidays\/{country}\/{year}<\/code>. Sends country\/year and filters national or subdivision dates locally. Check sponsorship requirements for commercial use.\n<a href=\"https:\/\/nagerholidays.com\/legal\/termsofservice\">Terms<\/a> | <a href=\"https:\/\/nagerholidays.com\/legal\/privacy\">Privacy<\/a><\/p>\n\n<p><strong>OpenHolidays API - public holidays<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/openholidaysapi.org\/PublicHolidays<\/code>. Sends country, language, date range and optional subdivision. Observe its ODbL data-license requirements.\n<a href=\"https:\/\/www.openholidaysapi.org\/en\/faq\/\">Terms\/data licence<\/a> | <a href=\"https:\/\/www.stueber.de\/en\/legal\/privacy.php\">Privacy<\/a><\/p>\n\n<p><strong>Calendarific - holiday dates<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/calendarific.com\/api\/v2\/holidays<\/code>. Sends API key, country\/year, optional location and holiday type. Cached dates expire within 30 days. Provide required attribution unless your agreement waives it.\n<a href=\"https:\/\/calendarific.com\/terms\">Terms<\/a> | <a href=\"https:\/\/calendarific.com\/privacy\">Privacy<\/a><\/p>\n\n<p><strong>Abstract Holidays - holiday dates<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/holidays.abstractapi.com\/v1\/<\/code>. Sends API key, country\/year and month\/day in daily mode. Daily mode covers checked dates only; annual access depends on your plan.\n<a href=\"https:\/\/www.abstractapi.com\/legal\/legal#terms\">Terms<\/a> | <a href=\"https:\/\/www.abstractapi.com\/legal\/legal#privacy\">Privacy<\/a><\/p>\n\n<p><strong>API Ninjas - holidays and world time<\/strong><\/p>\n\n<p>Endpoints: <code>https:\/\/api.api-ninjas.com\/v2\/holidays<\/code> and <code>https:\/\/api.api-ninjas.com\/v1\/worldtime<\/code>. Sends the API key plus country\/year and optional type for holidays, or <code>Etc\/UTC<\/code> for time. A storage-eligible plan and explicit entitlement confirmation are required.\n<a href=\"https:\/\/api-ninjas.com\/pricing\">Plans<\/a> | <a href=\"https:\/\/api-ninjas.com\/tos\">Terms<\/a> | <a href=\"https:\/\/api-ninjas.com\/privacy\">Privacy<\/a><\/p>\n\n<p><strong>TimeZoneDB - clock synchronization<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/api.timezonedb.com\/v2.1\/get-time-zone<\/code>. Sends API key, JSON format, zone lookup and <code>Etc\/UTC<\/code>. Use HTTPS-capable access and a plan allowing your intended commercial or non-commercial use.\n<a href=\"https:\/\/timezonedb.com\/terms-of-use\">Terms and privacy<\/a><\/p>\n\n<p><strong>IPGeolocation.io Time Zone - clock synchronization<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/api.ipgeolocation.io\/v3\/timezone<\/code>. Sends API key and <code>Etc\/UTC<\/code>; it does not look up visitors' IP addresses. Check commercial-use licensing.\n<a href=\"https:\/\/ipgeolocation.io\/tos.html\">Terms<\/a> | <a href=\"https:\/\/ipgeolocation.io\/privacy.html\">Privacy<\/a><\/p>\n\n<p><strong>timezone.io WorldTime compatibility - clock synchronization<\/strong><\/p>\n\n<p>Endpoint: <code>https:\/\/worldtime.timezone.io\/api\/timezone\/Etc\/UTC<\/code>. Requests UTC time without a key. Public-service availability may vary.\n<a href=\"https:\/\/www.timezone.io\/legal\/terms\">Terms<\/a> | <a href=\"https:\/\/www.timezone.io\/legal\/privacy\">Privacy<\/a><\/p>\n\n<p><strong>HolidayAPI-, Enrico- and TimeAPI-compatible adapters<\/strong><\/p>\n\n<p>These have no default endpoint. Each requires an authorized HTTPS endpoint, the actual operator's terms and privacy URLs, and confirmation of permitted requests and caching. Without these settings, no new request is made.<\/p>\n\n<ul>\n<li>HolidayAPI-compatible: sends key, country\/subdivision, year and optional public filtering for holiday dates; cache use is capped at 24 hours.<\/li>\n<li>Enrico-compatible: sends <code>getHolidaysForYear<\/code>, year, country, optional region\/type and configured authentication for holiday dates.<\/li>\n<li>TimeAPI-compatible: sends <code>timeZone=Etc\/UTC<\/code> and configured authentication for clock synchronization.<\/li>\n<\/ul>\n\n<p>Provide your operator's actual policy links in the settings and, where appropriate, your site's privacy notice. Documentation is available in the built-in Service directory.<\/p>\n\n<p><strong>Custom holiday or clock service<\/strong><\/p>\n\n<p>Configure a public HTTPS GET JSON endpoint, field mappings and optional header, query-key or Bearer authentication. It receives configured parameters and applicable country\/region\/year\/date or UTC-timezone placeholders. No visitor data is added. Enter the actual operator's terms\/privacy URLs and authorize permitted caching before use. No service or policy URL is preselected; the plugin stores, but does not certify, the supplied policies. OAuth, signed requests, POST-only APIs, XML and NTP are not supported.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Schedules, settings, credentials and service caches are stored in your WordPress database. Public schedules expose display information through a read-only endpoint; private schedules do not produce public output. Credentials are excluded from public output and exports. Supported encryption is required to save new keys. No tracking cookies or visitor analytics are added. Adapt your site's privacy notice to the services you enable; a sample is included in <code>TECHNICAL-GUIDE.md<\/code>.<\/p>\n\n<h3>Developer Integration<\/h3>\n\n<p>See <strong>Opening Hours &gt; Manual &amp; tutorials<\/strong> and the included <code>TECHNICAL-GUIDE.md<\/code> for shortcode options, hooks, API access, migration instructions and data-management details.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install from the WordPress plugin directory, or upload the <code>ingotforge-opening-hours-indicator<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through <strong>Plugins &gt; Installed Plugins<\/strong>.<\/li>\n<li>Open <strong>Opening Hours<\/strong>, create a public schedule, select its timezone, enter your hours and holidays, and save.<\/li>\n<li>Add one of the shortcodes below to a Shortcode block on a page, post or supported widget.<\/li>\n<li>Visit <strong>Opening Hours &gt; Manual &amp; tutorials<\/strong> for instructions and examples.<\/li>\n<\/ol>\n\n<ul>\n<li>Open\/closed status: <code>[ingotforge_hours id=\"1\"]<\/code><\/li>\n<li>Weekly timetable: <code>[ingotforge_schedule id=\"1\"]<\/code><\/li>\n<li>Business-local clock: <code>[ingotforge_clock id=\"1\"]<\/code><\/li>\n<\/ul>\n\n<p>Replace <code>1<\/code> with your saved schedule ID.<\/p>\n\n<p><strong>Upgrading an existing installation:<\/strong> Back up first and update without uninstalling. For a different installation folder, follow the included <code>TECHNICAL-GUIDE.md<\/code>. Do not activate both copies. Check existing shortcodes and custom integrations before upgrading; stored page content is not rewritten automatically.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20api%20account%3F\"><h3>Do I need an API account?<\/h3><\/dt>\n<dd><p>No. Manual schedules use your server clock and the selected business timezone. External holiday and clock services are optional; their accounts, fees and usage conditions vary.<\/p><\/dd>\n<dt id=\"can%20i%20add%20holidays%20manually%3F\"><h3>Can I add holidays manually?<\/h3><\/dt>\n<dd><p>Yes. Edit a schedule, add dates under <strong>Manual holidays &amp; closures<\/strong>, and save. Manual entries are not erased by service refreshes. Force-open overrides and explicit date-specific opening hours take priority.<\/p><\/dd>\n<dt id=\"does%20it%20support%20lunch%20breaks%20and%20overnight%20hours%3F\"><h3>Does it support lunch breaks and overnight hours?<\/h3><\/dt>\n<dd><p>Yes. Add multiple daily intervals for breaks and split shifts. <code>18:00-02:00<\/code> continues into the next morning; <code>00:00-00:00<\/code> represents a full day.<\/p><\/dd>\n<dt id=\"does%20the%20display%20update%20automatically%3F\"><h3>Does the display update automatically?<\/h3><\/dt>\n<dd><p>Live status refreshes through your website's endpoint. JavaScript and endpoint access are required; exclude that endpoint from page\/CDN caching. Clocks tick without per-second requests.<\/p><\/dd>\n<dt id=\"does%20the%20weekly%20timetable%20include%20holiday%20changes%3F\"><h3>Does the weekly timetable include holiday changes?<\/h3><\/dt>\n<dd><p>It shows regular hours. Holidays and special hours affect status; next-change predictions depend on available holiday data.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20schedules%20when%20i%20uninstall%3F\"><h3>What happens to my schedules when I uninstall?<\/h3><\/dt>\n<dd><p>Schedules are retained by default. Enable data deletion in <strong>Tools &amp; data<\/strong> before uninstalling only when you want to remove them. Service caches are cleared.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Standardized supported shortcode and integration names and updated timetable\/clock attribute filters.<\/li>\n<li>Updated usage and upgrade guidance. Existing schedules and settings are retained; earlier integrations may need adjustment.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added split shifts, special hours, timetable and clock displays, expanded service integrations, import\/export and built-in tutorials.<\/li>\n<\/ul>\n\n<p>Earlier releases: <code>changelog.txt<\/code>.<\/p>","raw_excerpt":"Display open\/closed status, weekly business hours and local clocks, with flexible schedules, manual holidays and optional API integrations.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=386806"}],"author":[{"embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ingotpress"}],"wp:attachment":[{"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386806"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386806"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386806"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386806"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386806"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/et.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}