{"id":374755,"date":"2026-09-25T12:52:49","date_gmt":"2026-09-25T12:52:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/opennow-cta\/"},"modified":"2026-09-25T13:29:53","modified_gmt":"2026-09-25T13:29:53","slug":"hoursflow","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/hoursflow\/","author":21096513,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1.2","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"HoursFlow \u2014 Business Hours CTA","header_author":"Ga Satrya","header_description":"Show an open or closed call to action based on your weekly business hours.","assets_banners_color":"","last_updated":"2026-09-25 13:29:53","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/gasatrya.com\/donate\/","header_plugin_uri":"https:\/\/gasatrya.com\/wp-plugins\/hoursflow\/","header_author_uri":"https:\/\/gasatrya.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":44,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"gasatrya","date":"2026-09-25 13:29:53","revision":3713110}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3713061,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3713110,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/options-general.php?page=hoursflow\",\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"hoursflow\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":{"hoursflow\/cta":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"hoursflow\/cta","title":"HoursFlow CTA","category":"widgets","icon":"megaphone","description":"Show the right call to action based on the current business state, with optional per-state content and status visibility.","keywords":["call to action","business hours","open now"],"textdomain":"hoursflow","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","attributes":{"overrides":{"type":"object"}},"supports":{"html":false,"customClassName":false,"color":{"text":true,"background":true,"__experimentalSkipSerialization":true,"__experimentalDefaultControls":{"text":true,"background":true}},"typography":{"fontSize":true,"lineHeight":true,"__experimentalFontFamily":true,"__experimentalFontWeight":true,"__experimentalFontStyle":true,"__experimentalTextTransform":true,"__experimentalLetterSpacing":true,"__experimentalDefaultControls":{"fontSize":true}}}}},"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3713061,"resolution":"1","location":"assets","locale":"","width":1917,"height":901}},"screenshots":{"1":"HoursFlow settings screen showing the business timezone, global CTA colors, weekly hours, and live open-state CTA preview."}},"plugin_section":[],"plugin_tags":[12431,1602,2487,148076,80],"plugin_category":[43],"plugin_contributors":[226940],"plugin_business_model":[],"class_list":["post-374755","plugin","type-plugin","status-publish","hentry","plugin_tags-business-hours","plugin_tags-call-to-action","plugin_tags-dynamic-content","plugin_tags-gutenberg","plugin_tags-shortcode","plugin_category-customization","plugin_contributors-gasatrya","plugin_committers-gasatrya"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hoursflow\/assets\/icon-256x256.png?rev=3713061","icon_2x":"https:\/\/ps.w.org\/hoursflow\/assets\/icon-256x256.png?rev=3713061","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/hoursflow\/assets\/screenshot-1.png?rev=3713061","caption":"HoursFlow settings screen showing the business timezone, global CTA colors, weekly hours, and live open-state CTA preview."}],"raw_content":"<!--section=description-->\n<p>Visitors should not have to guess what to do when your business is open or\nclosed. HoursFlow CTA lets you present one clear action for each state, such as\ncalling while you are open and booking or sending a message after hours.<\/p>\n\n<p>Configure it once in <strong>Settings &gt; HoursFlow<\/strong>, then use the same schedule-aware\nCTA through a shortcode or a dynamic block. HoursFlow renders the selected state\non the server, without an account or a remote service.<\/p>\n\n<h4>Who is this for?<\/h4>\n\n<p>HoursFlow CTA is for small businesses, studios, practices, shops, and service\nteams that want a simple open-hours action on their WordPress site. It works\nwell when the action changes with the weekly schedule and the site owner wants\nto keep the copy and destination under their control.<\/p>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li>One global open CTA and one global closed CTA shared by the shortcode and\nthe HoursFlow CTA block.<\/li>\n<li>A Monday-to-Sunday schedule using a named IANA business timezone, including\novernight periods such as 22:00 to 02:00.<\/li>\n<li>Sparse per-state block overrides for label, action, status, and hiding the\nstatus without changing the global settings.<\/li>\n<li>Root-relative URLs, HTTPS URLs, and supported <code>tel:<\/code> actions, with plain-text\nlabels and status values.<\/li>\n<li>Global background and text colors, plus WordPress's built-in block color and\ntypography controls.<\/li>\n<li>A compact, responsive link with visible keyboard focus and a minimum 44 CSS\npixel target. Open and closed state is not communicated by color alone.<\/li>\n<li>No browser timers, polling, AJAX, remote assets, cookies, or background\nrequests.<\/li>\n<\/ul>\n\n<h4>Focused by design<\/h4>\n\n<p>HoursFlow CTA is a focused weekly-hours switch, not a booking system or a full\nbusiness-hours manager. Each weekday has one period or is closed. Holiday\nexceptions, multiple daily periods, split shifts, date ranges, and automatic\nschedule-generated status copy are outside this release. The status message is\nwritten by the administrator and stays exactly as configured.<\/p>\n\n<p>HoursFlow is intended for a single-site installation. Multisite and network\nactivation are not claimed by this release.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Use the shortcode anywhere WordPress processes shortcodes:<\/p>\n\n<pre><code>[hoursflow_cta]\n\n[hoursflow_cta hide_status=\"1\"]\n<\/code><\/pre>\n\n<p>Only the exact <code>hide_status=\"1\"<\/code> value hides the selected state's status. Other\nattributes and enclosed content are ignored.<\/p>\n\n<p>The dynamic <code>hoursflow\/cta<\/code> block uses the same server renderer. It can override\nthe label, action, or status independently for its open and closed states. A\nblock can also hide a state's status; invalid or missing values fall back to\nthe corresponding global value. Removing all overrides restores the standard\nblock output.<\/p>\n\n<h3>Schedule and timezone<\/h3>\n\n<p>Times use the saved business timezone, not the visitor, browser, server, or\nWordPress site timezone. <code>UTC<\/code> and named IANA regions such as\n    America\/New_York are valid; raw UTC offsets are not.<\/p>\n\n<p>A period is half-open: the opening minute is open and the exact closing minute\nis closed. A closing time earlier than the opening time continues overnight\ninto the next day and belongs to the day on which it starts. Equal opening and\nclosing times are invalid and do not mean 24-hour opening. PHP's timezone data\nhandles daylight-saving transitions; there is no separate DST setting.<\/p>\n\n<h3>Appearance and accessibility<\/h3>\n\n<p>Global background and text colors apply to the shortcode and provide the\nblock defaults. Blank saved colors use <code>#166534<\/code> and <code>#FFFFFF<\/code>; nonblank colors\nmust be six-digit hexadecimal values and the pair must meet WCAG 2.2 AA\ncontrast for normal text. Blocks may use WordPress's built-in color and\ntypography controls for instance-specific styling.<\/p>\n\n<p>The frontend CTA is a native keyboard-operable link with visible focus styling,\nreadable status text, safe wrapping, and no fake button role or live region.\nThe settings screen includes a keyboard-operable preview that never follows an\naction.<\/p>\n\n<h3>Caching<\/h3>\n\n<p>HoursFlow checks the schedule when the shortcode or dynamic block renders.\nCached page HTML can therefore remain stale until the site's page-cache TTL.\nIf a site needs a maximum staleness of <strong>N<\/strong> minutes, set its cache TTL to no\nmore than <strong>N<\/strong> minutes or arrange boundary purges in the site's own caching\nsystem. HoursFlow does not manage cache variation or purges.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>HoursFlow makes no external requests and loads no remote scripts, fonts, images,\nor stylesheets. It collects no visitor data, sets no cookies, and performs no\ntracking or telemetry. A visitor can follow the configured CTA, and an\nadministrator can follow the clearly labeled Gasatrya hire or donation link on\n<strong>Settings &gt; HoursFlow<\/strong>; those are ordinary user-initiated navigations.<\/p>\n\n<h3>Deactivation and uninstall<\/h3>\n\n<p>Deactivation stops HoursFlow behavior but keeps the saved settings for\nreactivation. Uninstall deletes the HoursFlow configuration and schema marker.\nThe plugin creates no custom tables, posts, pages, user metadata, or transient\nbusiness data. Reinstalling after uninstall starts unconfigured.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>hoursflow<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or upload the\nproduction ZIP in <strong>Plugins &gt; Add New &gt; Upload Plugin<\/strong>.<\/li>\n<li>Activate <strong>HoursFlow CTA<\/strong>.<\/li>\n<li>Go to <strong>Settings &gt; HoursFlow<\/strong> and choose a named IANA timezone.<\/li>\n<li>Set each weekday to closed or enter one opening and closing time. Add the\nopen and closed labels and actions, then save.<\/li>\n<li>Add <code>[hoursflow_cta]<\/code> or the <strong>HoursFlow CTA<\/strong> block to a page.<\/li>\n<\/ol>\n\n<p>A fresh activation is unconfigured and renders no CTA until a complete valid\nconfiguration is saved. Invalid settings keep the last valid configuration and\nshow field-specific errors.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20hoursflow%20cta%20a%20booking%20system%3F\"><h3>Is HoursFlow CTA a booking system?<\/h3><\/dt>\n<dd><p>No. It displays a link that you configure. Point the open or closed action at\nyour existing booking, contact, phone, or other destination.<\/p><\/dd>\n<dt id=\"can%20open%20and%20closed%20states%20use%20different%20actions%3F\"><h3>Can open and closed states use different actions?<\/h3><\/dt>\n<dd><p>Yes. Configure a separate label, action, and optional status for each state.<\/p><\/dd>\n<dt id=\"do%20overnight%20hours%20work%3F\"><h3>Do overnight hours work?<\/h3><\/dt>\n<dd><p>Yes. Enter a closing time earlier than the opening time, such as 22:00 to\n02:00. The period carries into the following day.<\/p><\/dd>\n<dt id=\"can%20hoursflow%20write%20the%20next%20opening%20time%20for%20me%3F\"><h3>Can HoursFlow write the next opening time for me?<\/h3><\/dt>\n<dd><p>No. Status text is administrator-authored. Enter wording that is accurate for\nyour schedule and update it when your message changes.<\/p><\/dd>\n<dt id=\"can%20i%20configure%20holidays%20or%20multiple%20shifts%3F\"><h3>Can I configure holidays or multiple shifts?<\/h3><\/dt>\n<dd><p>Not in this release. HoursFlow has one weekly period per day and no holiday or\nexception calendar.<\/p><\/dd>\n<dt id=\"why%20does%20a%20cached%20page%20show%20the%20previous%20state%3F\"><h3>Why does a cached page show the previous state?<\/h3><\/dt>\n<dd><p>The state is calculated when the page is rendered. A page cache can keep that\nHTML until its TTL expires, so set an appropriate TTL or configure boundary\npurges in the site's caching system.<\/p><\/dd>\n<dt id=\"does%20hoursflow%20support%20multisite%3F\"><h3>Does HoursFlow support multisite?<\/h3><\/dt>\n<dd><p>This release is designed for a single site. Multisite and network activation\nare not claimed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial HoursFlow \u2014 Business Hours CTA release.<\/li>\n<\/ul>","raw_excerpt":"Show an open or closed call to action based on your weekly business hours.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/374755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=374755"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gasatrya"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=374755"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=374755"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=374755"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=374755"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=374755"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=374755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}