{"id":10883,"date":"2026-05-22T02:29:50","date_gmt":"2026-05-21T18:29:50","guid":{"rendered":"https:\/\/aeosub.com\/freeslot-calendar\/"},"modified":"2026-05-22T02:29:50","modified_gmt":"2026-05-21T18:29:50","slug":"freeslot-calendar","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/freeslot-calendar\/","title":{"rendered":"Freeslot Calendar"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/freeslot-calendar\/assets\/banner-772x250.png?rev=3542514\" alt=\"Freeslot Calendar\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/freeslot-calendar\/assets\/icon-256x256.png?rev=3542514\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/krasimirignatov\/\" target=\"_blank\" rel=\"noopener\">Krasimir Ignatov<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.7.19<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.0 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-21 5:51pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/freeslot-calendar\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Read-only availability calendar with admin-managed events. Bilingual (BG\/EN), shortcode-driven. Show visitors when you&#039;re free, no booking system.<\/div>\n<p>Freeslot Calendar is a lightweight WordPress plugin that publishes a clean monthly availability view on any page or post. It&#8217;s built for freelancers, designers, photographers, consultants, and small studios who want visitors to see <em>at a glance<\/em> which days are open and which are busy, without exposing a full booking system.<\/p>\n<p>Events live in your WordPress admin like any other content. The public calendar reads from them and paints each day as <strong>Free<\/strong>, <strong>Partially busy<\/strong>, or <strong>Fully busy<\/strong> based on your working hours.<\/p>\n<h4>Key features<\/h4>\n<ul>\n<li><strong>Drop-in shortcode<\/strong> \u2014 <code>[igcal_availability]<\/code> renders the calendar anywhere.<\/li>\n<li><strong>Bilingual out of the box<\/strong> \u2014 Bulgarian and English, per-event title and note translations, automatic locale switching.<\/li>\n<li><strong>Working-hours aware<\/strong> \u2014 partial vs. full busy status is computed from your actual day, not a guess.<\/li>\n<li><strong>Recurring events<\/strong> \u2014 daily, weekly, monthly, with an end date.<\/li>\n<li><strong>Per-event color, image, and category<\/strong> for richer day-detail cards.<\/li>\n<li><strong>Customizable Contact CTA<\/strong> \u2014 label, colors, size, and the URL it links to.<\/li>\n<li><strong>Customizable header<\/strong> \u2014 change the calendar&#8217;s title and subtitle per language, or pass a <code>title=\"...\"<\/code> shortcode attribute.<\/li>\n<li><strong>Accessible<\/strong> \u2014 full keyboard navigation (arrows, Home\/End, PageUp\/Down), ARIA roles, screen-reader announcements on month change.<\/li>\n<li><strong>Mobile responsive<\/strong> \u2014 two-stage breakpoints, dense list view on phones.<\/li>\n<li><strong>AJAX month navigation<\/strong> with skeleton loader and cross-fade transitions.<\/li>\n<li><strong>Cached<\/strong> \u2014 each month grid is cached per language and invalidated automatically when events or settings change.<\/li>\n<li><strong>No tracking, no external calls<\/strong> \u2014 your data stays on your site.<\/li>\n<\/ul>\n<h4>Shortcode attributes<\/h4>\n<ul>\n<li><code>months<\/code> \u2014 number of months to render (default <code>1<\/code>).<\/li>\n<li><code>lang<\/code> \u2014 <code>auto<\/code> (follow site locale), <code>bg<\/code>, or <code>en<\/code>.<\/li>\n<li><code>title<\/code> \u2014 override the header title for this instance.<\/li>\n<li><code>show_legend<\/code> \u2014 <code>1<\/code> or <code>0<\/code>.<\/li>\n<li><code>show_cta<\/code> \u2014 show the bottom Contact CTA bar (<code>1<\/code> or <code>0<\/code>).<\/li>\n<\/ul>\n<p>Example:<\/p>\n<pre><code>[igcal_availability lang=\"en\" months=\"3\" show_cta=\"0\"]\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Read-only availability calendar with admin-managed events. Bilingual (BG\/EN), shortcode-driven. Show visitors when you&#039;re free, no booking system.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[1284,1620,723,1658,884,555],"class_list":["post-10883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-appointments","tag-availability","tag-calendar","tag-freelancer","tag-schedule","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10883"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10883\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}