{"id":326827,"date":"2026-06-19T23:05:49","date_gmt":"2026-06-19T23:05:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/effortless-business-opening-hours\/"},"modified":"2026-06-19T23:05:37","modified_gmt":"2026-06-19T23:05:37","slug":"effortless-business-opening-hours","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/effortless-business-opening-hours\/","author":23148025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.6","stable_tag":"1.2.6","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Effortless Business Opening Hours","header_author":"domclic","header_description":"Manage and display opening\/visiting hours for multiple locations with unlimited time slots and specific closure dates.","assets_banners_color":"9e9e9e","last_updated":"2026-06-19 23:05:37","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/id7.dev\/donate\/","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":30,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.2.6":{"tag":"1.2.6","author":"domclic","date":"2026-06-19 23:05:37"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3579293,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3579293,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3579293,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3579293,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.6"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[12431,351,15082,4062,268004],"plugin_category":[40],"plugin_contributors":[241557],"plugin_business_model":[],"class_list":["post-326827","plugin","type-plugin","status-publish","hentry","plugin_tags-business-hours","plugin_tags-locations","plugin_tags-opening-hours","plugin_tags-schedule","plugin_tags-visiting-hours","plugin_category-calendar-and-events","plugin_contributors-domclic","plugin_committers-domclic"],"banners":{"banner":"https:\/\/ps.w.org\/effortless-business-opening-hours\/assets\/banner-772x250.jpg?rev=3579293","banner_2x":"https:\/\/ps.w.org\/effortless-business-opening-hours\/assets\/banner-1544x500.jpg?rev=3579293","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/effortless-business-opening-hours\/assets\/icon-128x128.jpg?rev=3579293","icon_2x":"https:\/\/ps.w.org\/effortless-business-opening-hours\/assets\/icon-256x256.jpg?rev=3579293","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Manage multiple locations with weekly schedules, unlimited time slots per day, and specific closed dates or date ranges (with optional labels). Display hours anywhere via [elboh_opening_hours] shortcode.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to \/wp-content\/plugins\/<\/li>\n<li>Activate through the Plugins menu<\/li>\n<li>Go to Opening Hours &gt; Add New to create your first location<\/li>\n<li>Use [opening_hours id=\"location-slug\"] in any page or widget<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Add dismissible donate notice on Opening Hours admin screens<\/li>\n<li>Add Donate link header; fix [opening_hours] reference in readme to [elboh_opening_hours]<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Replace inline admin  blocks with enqueued elboh-admin.css stylesheet<\/li>\n<li>Rename shortcode from [opening_hours] to [elboh_opening_hours] for uniqueness<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Remove load_plugin_textdomain() call; WordPress 4.6+ loads translations automatically<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Add Korean (ko_KR) and Japanese (ja) translations<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>closed=\"hide\" now also hides the upcoming closed dates\/vacation notice below the schedule<\/li>\n<li>closed=\"hide\" now also hides today's row when a specific date closure applies to today<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix closed=\"hide\" not working when Gutenberg\/block editor autocorrects straight quotes to curly\/smart quotes<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Rename shortcode attributes: show_title \u2192 title, show_closed \u2192 closed<\/li>\n<li>Attribute values are now show\/hide (e.g. title=\"hide\", closed=\"hide\"); 0\/1\/false\/true still accepted<\/li>\n<li>width attribute now sets an exact width instead of max-width<\/li>\n<li>Accepted CSS units for width\/height: px, %, em, rem, vw, vh, cm, mm, pt, auto<\/li>\n<\/ul>\n\n<h4>1.1.9<\/h4>\n\n<ul>\n<li>Fix show_closed=0: now hides all closed days including today (removed forced today exception)<\/li>\n<li>Reduce spacing between schedule table and closure notice to 0.25em<\/li>\n<\/ul>\n\n<h4>1.1.8<\/h4>\n\n<ul>\n<li>Allow deleting the last closure row in admin (no longer blocked by minimum-one guard)<\/li>\n<li>Skip blank closure entries on save so empty rows are never written to the database<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Remove all shortcode hint UI (edit screen bar and below-table options reference)<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Remove per-location shortcode listing below the list table; show only the options reference<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Fix double-escaping that corrupted shortcodes for titles with apostrophes, accents, or non-ASCII characters<\/li>\n<li>Show all location shortcodes (copy-ready) below the list table, above the options reference<\/li>\n<li>Fix format_date() timezone: parse stored dates as noon UTC to avoid off-by-one-day on UTC+ servers<\/li>\n<li>Fix usort callback defensively handling missing start\/date keys in closure entries<\/li>\n<li>Guard unicode migration to run only for users with edit_posts capability<\/li>\n<li>Fix DOM-XSS vector in admin JS addSlot(): use createElement instead of innerHTML<\/li>\n<li>Uninstall now removes the elboh_unicode_v1 migration flag option<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Show shortcode options reference once below the locations list table instead of repeating in each row<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Move shortcode options table from the edit screen to the locations list table column<\/li>\n<li>Edit screen shows only the shortcode hint bar; list table column shows all options<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Auto-repair corrupted accented\/unicode characters in existing closure labels (one-time migration)<\/li>\n<li>Match shortcode location by post title so non-ASCII names like Mandarin work without slug<\/li>\n<li>Shortcode hint on edit screen now shows location title instead of slug<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>List all available shortcode options below the shortcode hint<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Show shortcode hint below the title on the location edit screen<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Show closed days in grey (day name + Closed text); remove italic<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Redesign to minimal output: stripped CSS, plain title, removed show_borders, no decorative markup<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Add show_borders shortcode attribute to hide card border, shadow, and row lines<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Add shortcode attributes: width, height, show_title, show_closed<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fix UTF-8 characters (accents, CJK, etc.) corrupted in closure labels<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Add French, Spanish, and Traditional Chinese (Taiwan) translations<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Show shortcode in the Opening Hours locations list table<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Version bump for session completion and zip packaging<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Manage and display opening\/visiting hours for shops and events with multiple locations, unlimited time slots, and specific closure dates.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/326827","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=326827"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/domclic"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=326827"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=326827"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=326827"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=326827"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=326827"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=326827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}