{"id":345852,"date":"2026-08-03T09:08:17","date_gmt":"2026-08-03T09:08:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/stay7-calendar\/"},"modified":"2026-08-03T09:07:48","modified_gmt":"2026-08-03T09:07:48","slug":"stay7-calendar","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/stay7-calendar\/","author":23498110,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.7","stable_tag":"1.0.7","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Stay7 Calendar","header_author":"Stay7","header_description":"Displays the Stay7 availability calendar and lets guests submit direct booking requests.","assets_banners_color":"c6c8cc","last_updated":"2026-08-03 09:07:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/stay7.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":23,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.7":{"tag":"1.0.7","author":"nikola926","date":"2026-08-03 09:07:48"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3632628,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3632628,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3632628,"resolution":"1544x500","location":"assets","locale":"","width":1902,"height":600},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3632628,"resolution":"772x250","location":"assets","locale":"","width":1902,"height":600}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.7"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3632628,"resolution":"1","location":"assets","locale":"","width":1052,"height":640},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3632628,"resolution":"2","location":"assets","locale":"","width":772,"height":518},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3632628,"resolution":"3","location":"assets","locale":"","width":1015,"height":726}},"screenshots":[]},"plugin_section":[],"plugin_tags":[1279,269,416,5070,1475],"plugin_category":[40],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-345852","plugin","type-plugin","status-publish","hentry","plugin_tags-availability","plugin_tags-booking","plugin_tags-calendar","plugin_tags-property","plugin_tags-reservations","plugin_category-calendar-and-events","plugin_committers-nikola926"],"banners":{"banner":"https:\/\/ps.w.org\/stay7-calendar\/assets\/banner-772x250.png?rev=3632628","banner_2x":"https:\/\/ps.w.org\/stay7-calendar\/assets\/banner-1544x500.png?rev=3632628","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/stay7-calendar\/assets\/icon-128x128.png?rev=3632628","icon_2x":"https:\/\/ps.w.org\/stay7-calendar\/assets\/icon-256x256.png?rev=3632628","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/stay7-calendar\/assets\/screenshot-1.png?rev=3632628","caption":""},{"src":"https:\/\/ps.w.org\/stay7-calendar\/assets\/screenshot-2.png?rev=3632628","caption":""},{"src":"https:\/\/ps.w.org\/stay7-calendar\/assets\/screenshot-3.png?rev=3632628","caption":""}],"raw_content":"<!--section=description-->\n<p>Stay7 Calendar connects a WordPress site with the Stay7 property and reservation management service.<\/p>\n\n<p>The plugin lets you:<\/p>\n\n<ul>\n<li>display an availability calendar;<\/li>\n<li>show per-night pricing;<\/li>\n<li>let guests choose a room, dates, and number of guests;<\/li>\n<li>send a direct booking request;<\/li>\n<li>sync Stay7 properties and rooms;<\/li>\n<li>customize the colors, width, and number of steps of the form.<\/li>\n<\/ul>\n\n<p>A Stay7 account is required to use this plugin. Once the account is connected, the plugin fetches properties, rooms, availability, and pricing from the Stay7 service. All functionality included in the plugin code is available without any separate license for the plugin itself.<\/p>\n\n<p>Shortcode:<\/p>\n\n<pre><code>[stay7_calendar]\n<\/code><\/pre>\n\n<p>To display a specific property:<\/p>\n\n<pre><code>[stay7_calendar property_id=\"public_property_id\"]\n<\/code><\/pre>\n\n<h3>External service<\/h3>\n\n<p>This plugin relies on the Stay7 service to display availability and pricing and to send booking requests.<\/p>\n\n<p>When an administrator voluntarily connects a Stay7 account, the plugin communicates with <code>https:\/\/app.stay7.io<\/code>. During the connection, the WordPress site URL and a one-time connection code are sent. Stay7 returns an account token along with data about the connected user, properties, and rooms. Tokens are stored in the WordPress database.<\/p>\n\n<p>When a visitor opens a page containing the Stay7 calendar, the plugin sends the property identifier and the selected date range to the Stay7 service to fetch availability and pricing.<\/p>\n\n<p>When a guest submits a booking request, the following is sent to the Stay7 service:<\/p>\n\n<ul>\n<li>first and last name;<\/li>\n<li>email address and phone number;<\/li>\n<li>check-in and check-out dates;<\/li>\n<li>the selected property and room;<\/li>\n<li>number of adults, children, and pets;<\/li>\n<li>the calculated price and currency;<\/li>\n<li>an optional note entered by the guest.<\/li>\n<\/ul>\n\n<p>Stay7 terms of service: https:\/\/stay7.io\/terms\/<\/p>\n\n<p>Privacy information: https:\/\/stay7.io\/terms\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>stay7-calendar<\/code> directory to <code>\/wp-content\/plugins\/<\/code>, or install the ZIP file through the WordPress admin.<\/li>\n<li>Activate the plugin on the \"Plugins\" page.<\/li>\n<li>Open the \"Stay7\" menu in your WordPress admin sidebar (the connection screen).<\/li>\n<li>Click the connect button and complete the connection.<\/li>\n<li>Copy the generated property shortcode onto the page or post where you want the calendar to appear.<\/li>\n<li>Optionally, adjust the appearance under the \"Stay7\" calendar configuration submenu.<\/li>\n<\/ol>\n\n<p>Note: the plugin's admin screens and the public calendar\/booking form are currently in Serbian (the plugin's primary market); all strings are translatable and additional locales can be contributed via translate.wordpress.org.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20a%20stay7%20account%20required%3F\"><h3>Is a Stay7 account required?<\/h3><\/dt>\n<dd><p>Yes. The plugin uses Stay7 as an external service for properties, availability, pricing, and booking requests.<\/p><\/dd>\n<dt id=\"which%20shortcode%20should%20i%20use%3F\"><h3>Which shortcode should I use?<\/h3><\/dt>\n<dd><p>Use <code>[stay7_calendar]<\/code>. Once the account is connected, the Stay7 admin page will also display the shortcode for each property.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20charge%20the%20guest%3F\"><h3>Does the plugin charge the guest?<\/h3><\/dt>\n<dd><p>No. The plugin sends a booking request. The host then processes the request through Stay7.<\/p><\/dd>\n<dt id=\"is%20data%20sent%20to%20an%20external%20service%3F\"><h3>Is data sent to an external service?<\/h3><\/dt>\n<dd><p>Yes. Data needed for availability and booking is sent to the Stay7 service. A detailed list is provided in the \"External service\" section.<\/p><\/dd>\n<dt id=\"what%20gets%20deleted%20on%20uninstall%3F\"><h3>What gets deleted on uninstall?<\/h3><\/dt>\n<dd><p>Uninstalling removes the plugin's settings, connection tokens, and locally synced property data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Initial public release.<\/li>\n<li>Improved input sanitization and validation.<\/li>\n<li>Restricted the calendar maximum-width setting to safe CSS size values.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Preserved the account connection state explicitly through the Stay7 login and API redirect flow.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Made the account connection state independent of WordPress session-token rotation during the external login redirect.<\/li>\n<li>Added a specific error when the external connection flow omits the state parameter.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed account connection state validation across the external Stay7 login redirect.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Enqueued admin JavaScript through the WordPress assets API.<\/li>\n<li>Moved plugin administration pages under Settings.<\/li>\n<li>Updated the external service terms and privacy URL.<\/li>\n<li>Reviewed request handlers for nonce and capability checks.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Security: the Stay7 account connection flow now verifies a one-time state token, closing a CSRF exposure during account connection.<\/li>\n<li>Fixed a calendar layout break when the site's theme\/page builder wraps the shortcode in a flex or grid container.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed reconnecting a Stay7 account after returning to WordPress.<\/li>\n<li>Added compatible handling of the legacy callback code parameter name.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<li>Stay7 account connection.<\/li>\n<li>Availability calendar and booking request form.<\/li>\n<li>Property and room sync.<\/li>\n<li>Calendar appearance settings.<\/li>\n<\/ul>","raw_excerpt":"Display the Stay7 availability calendar and let guests submit a direct booking request.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345852","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=345852"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nikola926"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345852"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345852"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345852"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345852"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345852"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}