{"id":379932,"date":"2026-10-20T15:04:22","date_gmt":"2026-10-20T15:04:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/class-booking-holdstyring\/"},"modified":"2026-10-20T15:03:47","modified_gmt":"2026-10-20T15:03:47","slug":"holdstyring-class-booking-widgets","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/holdstyring-class-booking-widgets\/","author":23578713,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Holdstyring Class Booking Widgets","header_author":"Nahbo ApS","header_description":"Show your schedule, prices, instructors and booking from Class Booking \/ Holdstyring directly on your WordPress site. Connect once with your API key; the loader cannot be stripped by page builders.","assets_banners_color":"","last_updated":"2026-10-20 15:03:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/class-booking.com\/widget-guide","header_author_uri":"https:\/\/class-booking.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":"nahbo","date":"2026-10-20 15:03:47","revision":3756965}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The settings page: connect with your API key and check that the domain is approved.","2":"The Class Booking block in the editor with a live preview.","3":"A schedule rendered on a page."}},"plugin_section":[],"plugin_tags":[269,27880,6165,268,10311],"plugin_category":[40],"plugin_contributors":[287727],"plugin_business_model":[],"class_list":["post-379932","plugin","type-plugin","status-publish","hentry","plugin_tags-booking","plugin_tags-class-schedule","plugin_tags-fitness","plugin_tags-scheduling","plugin_tags-yoga","plugin_category-calendar-and-events","plugin_contributors-nahbo","plugin_committers-nahbo"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/holdstyring-class-booking-widgets.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Class Booking lets your yoga, pilates or fitness studio show live booking content directly on your WordPress site. Connect once with your API key, then use the \"Class Booking\" block or a shortcode to embed your schedule, prices, instructors, class types, reviews, contact form and more.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li><strong>Connect once<\/strong> \u2014 paste your API key under Settings \u2192 Class Booking and click \"Connect and check\". The plugin confirms which studio you are connected to.<\/li>\n<li><strong>One-click domain request<\/strong> \u2014 if your WordPress domain is missing from the key's allowed domains, the plugin sends it to your studio for approval with one click. The studio approves it under Widgets \u2192 API keys, and the widgets work as soon as it is approved.<\/li>\n<li><strong>The loader cannot be stripped<\/strong> \u2014 the script is enqueued automatically in the footer, so page builders do not remove it (the most common manual-setup mistake).<\/li>\n<li><strong>Native Gutenberg block<\/strong> with a live preview in the editor.<\/li>\n<li><strong>Shortcode<\/strong> for the classic editor and page builders: <code>[class_booking type=\"schedule\"]<\/code>.<\/li>\n<li><strong>Follows your brand<\/strong> \u2014 widgets inherit your colors, and <code>theme-mode=\"auto\"<\/code> follows the visitor's light or dark mode.<\/li>\n<\/ul>\n\n<p>Booking, login and payment all happen inside the widget.<\/p>\n\n<p><strong>Requires a Class Booking account.<\/strong> This plugin is a client for the Class Booking (Holdstyring) booking service. Without an account and an API key, most widgets cannot load any data.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Class Booking \/ Holdstyring to display your studio's live booking data. The connection is required for the plugin to work at all.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li><strong>The widget loader<\/strong> (<code>https:\/\/widgets.holdstyring.dk\/v1\/holdstyring-widgets.min.js<\/code>) is loaded on the pages where you use a widget, so the widgets can render in the visitor's browser.<\/li>\n<li><strong>On \"Connect and check\"<\/strong> the plugin sends your API key and your WordPress domain to your studio address (<code>\/api\/widget\/connect<\/code>) to confirm the connection. Nothing is stored beyond what you enter yourself.<\/li>\n<li><strong>On \"Send the domain for approval\"<\/strong> the plugin sends your WordPress domain to <code>\/api\/widget\/allow-origin<\/code>. The domain then waits for the studio's approval in its Class Booking admin; only an approved domain can display the widgets.<\/li>\n<li><strong>When a visitor views a widget<\/strong>, the widget fetches public studio content (schedule, prices and so on) from your studio address.<\/li>\n<\/ul>\n\n<p>This service is provided by Nahbo ApS (Class Booking \/ Holdstyring).\nTerms of service: https:\/\/class-booking.com\/terms\nPrivacy policy: https:\/\/class-booking.com\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to Settings \u2192 Class Booking, paste your API key and base URL (both are found under Widgets in your Class Booking admin), and click \"Connect and check\".<\/li>\n<li>Add the \"Class Booking\" block to a page, or use the shortcode <code>[class_booking type=\"schedule\"]<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20do%20i%20find%20my%20api%20key%3F\"><h3>Where do I find my API key?<\/h3><\/dt>\n<dd><p>Under Widgets in your Class Booking \/ Holdstyring admin. Create a key and copy the full key.<\/p><\/dd>\n<dt id=\"do%20i%20have%20to%20add%20my%20domain%20myself%3F\"><h3>Do I have to add my domain myself?<\/h3><\/dt>\n<dd><p>No. Click \"Connect and check\"; if the domain is missing, click \"Send the domain for approval\". The studio then approves it under Widgets \u2192 API keys in its Class Booking admin. You can also add the domain there yourself.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20page%20builders%20%28elementor%2C%20divi%29%3F\"><h3>Does it work with page builders (Elementor, Divi)?<\/h3><\/dt>\n<dd><p>Yes. The plugin enqueues the loader in the footer itself, so it is not stripped. Insert the block or the shortcode where the widget should appear.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20cost%20anything%3F\"><h3>Does the plugin cost anything?<\/h3><\/dt>\n<dd><p>No. The plugin is free. Most widgets need data from a Class Booking account (API key), so real-world use requires an active studio.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: settings page, loader enqueue, shortcode and server-rendered Gutenberg block.<\/li>\n<li>\"Connect and check\" button: validates the key and base URL against the studio and shows the connection status.<\/li>\n<li>Domain request: send your WordPress domain to the studio for approval with one click.<\/li>\n<\/ul>","raw_excerpt":"Show your schedule, prices, instructors and booking from your Class Booking studio on your WordPress site. Connect once with your API key.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379932","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=379932"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nahbo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379932"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379932"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379932"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379932"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379932"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}