{"id":387830,"date":"2026-10-19T13:46:22","date_gmt":"2026-10-19T13:46:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/saito-calendar-event\/"},"modified":"2026-10-20T15:49:56","modified_gmt":"2026-10-20T15:49:56","slug":"saito-calendar-event","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/saito-calendar-event\/","author":23325312,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Saito Calendar Event","header_author":"Troteseil Lucas","header_description":"Calendriers \u00e0 cases d\u00e9blocables par date (calendrier de l'Avent, compte \u00e0 rebours d'un \u00e9v\u00e9nement\u2026) : chaque case r\u00e9v\u00e8le un texte, une image, un produit et, avec WooCommerce, un code promo ajoutable au panier.","assets_banners_color":"4557e0","last_updated":"2026-10-20 15:49:56","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Lucas-tsl\/saito-calendar-event","header_author_uri":"https:\/\/github.com\/Lucas-tsl","rating":0,"author_block_rating":0,"active_installs":0,"downloads":91,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"lucastsl","date":"2026-10-19 13:45:45","revision":3754865},"1.0.3":{"tag":"1.0.3","author":"lucastsl","date":"2026-10-20 12:26:46","revision":3756690},"1.1.0":{"tag":"1.1.0","author":"lucastsl","date":"2026-10-20 15:49:56","revision":3757036}},"upgrade_notice":{"1.1.0":"<p>The &quot;Calendriers&quot; menu moves under the new shared &quot;Saito&quot; menu (Saito &gt; Calendriers). Calendars are unchanged.<\/p>","1.0.3":"<p>Fixes the linked product display in the admin and the product price in the reveal modal.<\/p>","1.0.2":"<p>Updates the bundled SortableJS library to 1.15.7.<\/p>","1.0.1":"<p>Fixes calendars displayed without styles on block themes.<\/p>","1.0.0":"<p>First public release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3754896,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3754896,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3754896,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3754896,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"saito-calendar-event\/calendar":{"name":"saito-calendar-event\/calendar","title":"Calendrier \u00e0 cases"}},"tagged_versions":["1.0.2","1.0.3","1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3754865,"resolution":"1","location":"assets","locale":"","width":1060,"height":880},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3754865,"resolution":"2","location":"assets","locale":"","width":1060,"height":880},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3754865,"resolution":"3","location":"assets","locale":"","width":400,"height":1180}},"screenshots":{"1":"The Sparkle design: header with the calendar title, mosaic of doors (the 24th in the middle), today's door and opened doors showing their reward.","2":"The Floral duo design, mixing blue-and-silver and white-and-gold doors.","3":"The Floral white and gold design on a phone."}},"plugin_section":[],"plugin_tags":[17408,416,11659,326,286],"plugin_category":[40,45],"plugin_contributors":[262647],"plugin_business_model":[],"class_list":["post-387830","plugin","type-plugin","status-publish","hentry","plugin_tags-advent-calendar","plugin_tags-calendar","plugin_tags-countdown","plugin_tags-coupon","plugin_tags-woocommerce","plugin_category-calendar-and-events","plugin_category-ecommerce","plugin_contributors-lucastsl","plugin_committers-lucastsl"],"banners":{"banner":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/banner-772x250.png?rev=3754896","banner_2x":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/banner-1544x500.png?rev=3754896","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/icon-128x128.png?rev=3754896","icon_2x":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/icon-256x256.png?rev=3754896","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/screenshot-1.png?rev=3754865","caption":"The Sparkle design: header with the calendar title, mosaic of doors (the 24th in the middle), today's door and opened doors showing their reward."},{"src":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/screenshot-2.png?rev=3754865","caption":"The Floral duo design, mixing blue-and-silver and white-and-gold doors."},{"src":"https:\/\/ps.w.org\/saito-calendar-event\/assets\/screenshot-3.png?rev=3754865","caption":"The Floral white and gold design on a phone."}],"raw_content":"<!--section=description-->\n<p>Saito Calendar Event builds <strong>calendars made of doors that unlock on a given date<\/strong> \u2014 an Advent calendar, a countdown before a launch, a \"12 days of\" campaign\u2026 Each door reveals its own reward on its day: a short title, a description, an image, a linked product and, with WooCommerce, a coupon code the visitor can copy or add to their cart in one click.<\/p>\n\n<p><strong>Fair by design<\/strong><\/p>\n\n<ul>\n<li>A door can only be opened <strong>on its exact unlock day<\/strong>: before, it is locked (with a countdown); after, it is closed for good. The date check is done <strong>server-side<\/strong>: the reward and the coupon code are never sent to the browser before the date.<\/li>\n<li>Coupons are re-checked when added to the cart, and requests are rate-limited.<\/li>\n<\/ul>\n\n<p><strong>For visitors<\/strong><\/p>\n\n<ul>\n<li>Opening animation (a door that swings open), confetti in the colors of the theme, reveal modal with a \"Copy\" button and an \"Add the discount to my cart\" button (WooCommerce).<\/li>\n<li>Opened doors show the photo of their reward; a progress bar counts the doors opened.<\/li>\n<li>Keyboard accessible, respects \"reduced motion\" settings.<\/li>\n<\/ul>\n\n<p><strong>Seven designs<\/strong><\/p>\n\n<ul>\n<li><strong>Christmas<\/strong>, <strong>Neutral<\/strong> and <strong>Editorial<\/strong> (flat colors, serif type, bento grid).<\/li>\n<li><strong>Sparkle<\/strong> (coral red and gold, fireworks, golden stars) and three <strong>Floral<\/strong> designs (blue and silver, white and gold, or both mixed): doors of varied sizes in a mosaic, with the 1st and 24th doors as large doors, an optional header showing the calendar title and a subtitle.<\/li>\n<li>Colors, corner radius and borders can be adjusted, with a live preview.<\/li>\n<\/ul>\n\n<p><strong>For editors<\/strong><\/p>\n\n<ul>\n<li>A grid of doors in the admin: click a door to set its date, coupon, product (searched by name, with thumbnail, price and stock), texts and image. Drag a door onto another to swap their content.<\/li>\n<li>Coupon helper: suggestions from your published WooCommerce coupons (discount, status, expiry), and a warning if a code does not exist, is used up, has expired or expires before the door's date.<\/li>\n<li>Scheduling: show the calendar only between two dates, with an optional \"coming soon\" and \"it's over\" message.<\/li>\n<li>All visitor texts can be customized; calendars can be exported\/imported as JSON and duplicated from one year to the next.<\/li>\n<li>Insert a calendar with the <strong>\"Calendrier \u00e0 cases\" block<\/strong> or the <code>[saito_calendar_event id=\"123\"]<\/code> shortcode.<\/li>\n<\/ul>\n\n<p><strong>Requirements<\/strong><\/p>\n\n<p>WooCommerce is optional: without it, doors reveal their text and image; coupons and linked products need WooCommerce.<\/p>\n\n<p>The admin interface and default visitor texts are in French.<\/p>\n\n<h3>Third-party libraries and fonts<\/h3>\n\n<p>This plugin bundles the following open-source software, unmodified:<\/p>\n\n<ul>\n<li>canvas-confetti 1.9.4 (MIT License) \u2014 https:\/\/github.com\/catdad\/canvas-confetti<\/li>\n<li>vanilla-tilt.js 1.8.1 (MIT License) \u2014 https:\/\/github.com\/micku7zu\/vanilla-tilt.js<\/li>\n<li>SortableJS 1.15.7 (MIT License) \u2014 https:\/\/github.com\/SortableJS\/Sortable<\/li>\n<li>Bodoni Moda (SIL Open Font License 1.1) \u2014 https:\/\/github.com\/indestructible-type\/Bodoni<\/li>\n<li>Great Vibes (SIL Open Font License 1.1) \u2014 https:\/\/github.com\/googlefonts\/great-vibes<\/li>\n<\/ul>\n\n<p>The files in <code>assets\/js\/vendor\/<\/code> are the official, unmodified distribution builds of these projects (canvas-confetti in its readable build; SortableJS and vanilla-tilt.js as published, minified). Their full source code is available at the addresses above. The font license texts are included in <code>assets\/fonts\/<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>saito-calendar-event<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install the plugin from the <strong>Plugins \u2192 Add New<\/strong> screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Saito \u2192 Calendriers \u2192 Ajouter<\/strong>, set up the doors (date, reward, optional coupon), choose a design and publish.<\/li>\n<li>Insert the calendar in a page with the \"Calendrier \u00e0 cases\" block, or with the shortcode shown in the \"Utilisation\" tab: <code>[saito_calendar_event id=\"123\"]<\/code>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20a%20visitor%20open%20a%20door%20before%20its%20date%3F\"><h3>Can a visitor open a door before its date?<\/h3><\/dt>\n<dd><p>No. The date is checked on the server, in the site's timezone. The content of a door (texts, image, coupon) is only sent once the door is opened on its day.<\/p><\/dd>\n<dt id=\"does%20it%20create%20the%20woocommerce%20coupons%3F\"><h3>Does it create the WooCommerce coupons?<\/h3><\/dt>\n<dd><p>No. Create your coupons in WooCommerce (Marketing \u2192 Coupons) as usual, then type the code in the door. The plugin applies it to the cart when the visitor clicks the button, and warns you in the admin if the code looks wrong.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20without%20woocommerce%3F\"><h3>Can I use it without WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Doors then reveal their title, description and image only.<\/p><\/dd>\n<dt id=\"does%20it%20load%20anything%20from%20external%20services%3F\"><h3>Does it load anything from external services?<\/h3><\/dt>\n<dd><p>No. All scripts, styles and fonts are bundled in the plugin; nothing is loaded from a CDN or a third-party service, and no data is sent outside your site.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20calendars%20if%20i%20delete%20the%20plugin%3F\"><h3>What happens to my calendars if I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting the plugin from the Plugins screen removes the calendars it created and their settings. Deactivating it keeps everything.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New shared \"Saito\" admin menu, common to all Saito plugins: \"Calendriers\" now\nlives under Saito, next to a dashboard of the Saito plugins, a Tools\npage (additional CSS and JavaScript for the whole site) and a\nDocumentation page (source code, documentation, WordPress.org pages).<\/li>\n<li>Fix: coupon error messages from WooCommerce (e.g. minimum spend) showed\nHTML entities such as \"60,00\u00a0\u20ac\" in the case modal.<\/li>\n<li>The linked product's price is now left-aligned under its name in the\ncase modal.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fix: the linked product picked for a door was shown as \"[object Object]\" in the admin once selected (WooCommerce's selectWoo only accepts plain text there).<\/li>\n<li>Fix: the product price in the reveal modal showed HTML entities (\"20,00\u00a0\u20ac\") instead of \"20,00 \u20ac\".<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Update SortableJS to 1.15.7.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: with a block theme, a calendar inserted with the shortcode was displayed without its styles and scripts (plain grey doors).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Date-unlocked door calendars (Advent calendar, event countdown): each door reveals a text, an image, a product and an optional WooCommerce coupon.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387830","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=387830"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lucastsl"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387830"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387830"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387830"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387830"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387830"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}