{"id":389856,"date":"2026-10-26T00:07:51","date_gmt":"2026-10-26T00:07:51","guid":{"rendered":"https:\/\/ja.wordpress.org\/plugins\/redkirin-google-calendar-flex\/"},"modified":"2026-10-26T00:07:25","modified_gmt":"2026-10-26T00:07:25","slug":"redkirin-calendar-flex-for-google-calendar","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/redkirin-calendar-flex-for-google-calendar\/","author":23583486,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"RedKirin Calendar Flex for Google Calendar","header_author":"RedKirin Inc.","header_description":"Display events from public Google Calendar ICS feeds as a fully customizable calendar. No API key or OAuth required.","assets_banners_color":"ea947e","last_updated":"2026-10-26 00:07:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.redkirin.co.jp\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":88,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"redkirin","date":"2026-10-26 00:07:25","revision":3765376}},"upgrade_notice":{"1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3765376,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3765376,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3765376,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3765376,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3765376,"resolution":"1","location":"assets","locale":"","width":1148,"height":641},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3765376,"resolution":"2","location":"assets","locale":"","width":1148,"height":641},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3765376,"resolution":"3","location":"assets","locale":"","width":1148,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3765376,"resolution":"4","location":"assets","locale":"","width":1280,"height":1000},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3765376,"resolution":"5","location":"assets","locale":"","width":780,"height":1350}},"screenshots":{"1":"Month view with the base stylesheet (holidays and multi-day events).","2":"Week view with the time grid on desktop.","3":"Day view with the event details modal.","4":"Calendar editor with connection test and live preview.","5":"Month view on a phone (dots per event, tap a date for the list)."}},"plugin_section":[],"plugin_tags":[416,1486,4743,7103,6296],"plugin_category":[40],"plugin_contributors":[285877],"plugin_business_model":[],"class_list":["post-389856","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-events","plugin_tags-google-calendar","plugin_tags-ical","plugin_tags-ics","plugin_category-calendar-and-events","plugin_contributors-redkirin","plugin_committers-redkirin"],"banners":{"banner":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/banner-772x250.png?rev=3765376","banner_2x":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/banner-1544x500.png?rev=3765376","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/icon-128x128.png?rev=3765376","icon_2x":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/icon-256x256.png?rev=3765376","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/screenshot-1.png?rev=3765376","caption":"Month view with the base stylesheet (holidays and multi-day events)."},{"src":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/screenshot-2.png?rev=3765376","caption":"Week view with the time grid on desktop."},{"src":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/screenshot-3.png?rev=3765376","caption":"Day view with the event details modal."},{"src":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/screenshot-4.png?rev=3765376","caption":"Calendar editor with connection test and live preview."},{"src":"https:\/\/ps.w.org\/redkirin-calendar-flex-for-google-calendar\/assets\/screenshot-5.png?rev=3765376","caption":"Month view on a phone (dots per event, tap a date for the list)."}],"raw_content":"<!--section=description-->\n<p>RedKirin Calendar Flex for Google Calendar turns one or more <strong>public Google Calendar ICS feeds<\/strong> into a calendar that is rendered with your own HTML, CSS and JavaScript on your WordPress site. Google's embed iframe is not used, so the calendar inherits your theme and can be styled freely.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Register up to five public Google Calendar ICS URLs per calendar, each with its own display name and color.<\/li>\n<li>Month, week and day views with previous \/ today \/ next navigation, optionally switchable by visitors.<\/li>\n<li>Limit navigation to the present and future, or to a number of months ahead.<\/li>\n<li>Optional Japanese public holidays (fetched from Google's public holiday calendar, observances excluded).<\/li>\n<li>Event details in an accessible modal (keyboard, ESC, focus management).<\/li>\n<li>Recurring events (RRULE, RDATE, EXDATE, RECURRENCE-ID, cancelled instances) and time zones are handled server side.<\/li>\n<li>Server-side caching (default 60 minutes) with stale fallback when Google is unreachable.<\/li>\n<li>Base stylesheet built on CSS custom properties, five color themes, and a switch to disable the base CSS entirely.<\/li>\n<li>Theme template overrides: copy <code>month.php<\/code>, <code>week.php<\/code>, <code>day.php<\/code> or the parts into <code>your-theme\/redkirin-calendar-flex-for-google-calendar\/<\/code>.<\/li>\n<li>Shortcode: <code>[redkirin_calendar id=\"123\"]<\/code>.<\/li>\n<li>Live preview in the editor that follows unsaved changes.<\/li>\n<\/ul>\n\n<p><strong>Not included (by design)<\/strong><\/p>\n\n<ul>\n<li>Private calendars, Google API keys or OAuth. Only the <em>public<\/em> ICS address of a calendar is supported.<\/li>\n<li>Real-time synchronization. Google updates public ICS feeds with a delay of up to several hours, and the plugin caches the data.<\/li>\n<\/ul>\n\n<p>This plugin is not affiliated with, endorsed by, or sponsored by Google LLC. Google Calendar is a trademark of Google LLC.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin retrieves calendar data from Google's public ICS feeds.<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Google Calendar public ICS feeds (<code>calendar.google.com<\/code>).<\/li>\n<li><strong>What is sent:<\/strong> Your WordPress server requests the ICS URL(s) that an administrator entered in the plugin settings, and, when the \"Show Japanese public holidays\" option is enabled, Google's public Japanese holiday calendar URL. Requests include the server's user agent string and, for conditional requests, the ETag \/ Last-Modified values of the previous response. No visitor data is sent; visitors' browsers never contact Google.<\/li>\n<li><strong>When:<\/strong> When a calendar is displayed and the cache (default 60 minutes) has expired, when an administrator presses \"Refresh now\" or \"Test connection\", and when the live preview in the editor is updated.<\/li>\n<li><strong>Terms and privacy:<\/strong> <a href=\"https:\/\/policies.google.com\/terms\">Google Terms of Service<\/a>, <a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy Policy<\/a>.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>, or copy the <code>redkirin-calendar-flex-for-google-calendar<\/code> folder into <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin.<\/li>\n<li>In Google Calendar, open the calendar's settings, enable <em>Make available to public<\/em> and copy the <em>Public address in iCal format<\/em>.<\/li>\n<li>Go to <em>RedKirin Calendar Flex for Google Calendar \u2192 Add New<\/em>, paste the ICS URL, press <em>Test connection<\/em>, adjust the display options and save.<\/li>\n<li>Paste the shortcode shown on the edit screen into a post, page or shortcode widget.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20do%20new%20events%20not%20appear%20immediately%3F\"><h3>Why do new events not appear immediately?<\/h3><\/dt>\n<dd><p>Two caches are involved: Google regenerates public ICS feeds with a delay (often several hours), and this plugin caches the downloaded data for 60 minutes by default. Use <em>Refresh now<\/em> on the calendar edit screen to clear the plugin cache.<\/p><\/dd>\n<dt id=\"can%20i%20show%20a%20private%20calendar%3F\"><h3>Can I show a private calendar?<\/h3><\/dt>\n<dd><p>No. Only public ICS addresses are supported. Making a calendar public in Google Calendar is required.<\/p><\/dd>\n<dt id=\"can%20i%20use%20ics%20feeds%20from%20services%20other%20than%20google%3F\"><h3>Can I use ICS feeds from services other than Google?<\/h3><\/dt>\n<dd><p>By default only <code>calendar.google.com<\/code> and <code>www.google.com<\/code> are allowed for security reasons. Developers can extend the list with the <code>rkgcf_allowed_ics_hosts<\/code> filter.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20design%3F\"><h3>How do I change the design?<\/h3><\/dt>\n<dd><p>Override the CSS custom properties on <code>.rk-calendar<\/code> (for example <code>--rk-calendar-primary<\/code>, <code>--rk-calendar-border<\/code>, <code>--rk-calendar-radius<\/code>), target a single calendar with <code>.rk-calendar-123<\/code>, choose a color theme, or turn off the base CSS and style the stable <code>rk-calendar__*<\/code> classes yourself. A download button for the base stylesheet is available on the edit screen.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20html%3F\"><h3>Can I change the HTML?<\/h3><\/dt>\n<dd><p>Yes. Copy any file from the plugin's <code>templates\/<\/code> folder into <code>your-theme\/redkirin-calendar-flex-for-google-calendar\/<\/code> keeping the same relative path (for example <code>parts\/event.php<\/code>) and edit it there.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20the%20plugin%20is%20uninstalled%3F\"><h3>What happens when the plugin is uninstalled?<\/h3><\/dt>\n<dd><p>Cached data is always removed. Calendars and settings are removed only if <em>Delete all data on uninstall<\/em> is enabled in the plugin settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Display public Google Calendar feeds as a fully customizable month, week or day calendar. No API key, no OAuth, no iframe.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/389856","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=389856"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/redkirin"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=389856"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=389856"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=389856"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=389856"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=389856"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=389856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}