WordPress plugin intelligence profile

Coyomi – Archive Calendar

An archive calendar widget that adds no database queries to your pages.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version0.3.0
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 5.5 · PHP 7.4
Directory statusactive
Last directory update20 Oct 202613d ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Coyomi – Archive Calendar version 0.3.0 as active, updated 13d ago and tested up to WordPress 7.1.

Overview

About this plugin

Many archive calendar widgets query the database for every month on every page view.

On a site with years of posts that means around a hundred queries per page.

This widget aggregates the days that have posts once, when content changes, and writes them

to a static JSON file under wp-content/uploads/lwac/. Page views only read that file.

Coyomi (暦) means “calendar” in Japanese.

  • One query per rebuild ( SELECT DISTINCT DATE(post_date) ), none per page view
  • Rebuilt when a post is published, unpublished, trashed, deleted, re-dated or re-categorized, plus once a day
  • The first month is rendered in HTML (works without JavaScript); other months are drawn in the browser
  • Works with full-page caches: the browser always fetches the current data file
  • Filter by post types and categories
  • Five layouts: month calendar, week strip, year (12 month tiles), dropdowns only, and a year / month / day tree
  • A settings page (Settings → Coyomi) with a live preview. Widgets follow it unless they choose their own layout and colors
  • Five color schemes (Calendrier, Pastel, Classic, Dark, Simple). Every color can be changed per widget; only the changed colors are saved
  • Other plugins can add events (e.g. sales) to days with the coyomi_events filter. An event held on several days in a row is listed on one line, marked “On now” or “Ended”
  • No external requests: the calendar talks to no service outside your site and collects no data

Developers

Add events with the coyomi_events filter. It is called only when the data is rebuilt (never on page views),

so it may do slow work. Add one entry per day:

add_filter( 'coyomi_events', function ( $events, $dataset ) { try { foreach ( my_plugin_sale_days() as $day ) { $events[] = array( 'date' => $day, // 'YYYY-MM-DD' in the site's time zone 'label' => 'Autumn sale', // plain text, up to 60 characters 'url' => get_permalink( 123 ), // a post on this site, or '' 'color' => '#bf0000', // '#rrggbb' or '#rgb', or '' for the scheme's color 'source' => 'my-plugin', // a-z, 0-9, _ and -, up to 32 characters ); } } catch ( \Throwable $e ) { // Rebuilds also run on a reader's first page view and in cron.

On failure, add nothing. } return $events; }, 10, 2 );

How events are shown:

  • Days in a row with the same label, url and source are listed as one line (e.g. “12/4–12/11”).

Keep these three the same on every day of one event.

  • Entries with the same date, label and url are shown once, even when two plugins add them.
  • The list marks events held today as “On now” and past events as “Ended”, using the reader’s date in the browser

(so a cached page still shows the right state).

  • Events do not change the month the calendar opens on. Readers reach them with the previous / next buttons.
  • Entries with a date that does not exist or an empty label are dropped.

Rules for plugins that add events:

  • Add only the events your plugin owns. Do not pass on events your plugin received from another plugin;

that plugin can add them itself.

  • url must be a post or page on this site. Event links have no rel attribute, so never use affiliate

or other paid links there.

  • date is a date in the site’s time zone (Settings → General). The data is rebuilt when the time zone,

the permalink structure or the site address changes.

When your events change, ask for a rebuild. It runs once at the end of the request:

do_action( 'coyomi_request_rebuild' );

When your plugin is deactivated, remove your filter before asking for the rebuild, so that the rebuild at

the end of the same request does not add your events back.

The data file URL is built from the site URL (not the uploads URL), so it keeps working when media is

served from another domain or a CDN. If your setup still needs a different URL:

add_filter( 'coyomi_data_url', function ( $url, $key, $path ) { return $url; // must be readable from the page (same origin, or CORS allowed) }, 10, 3 );<h3>WP-CLI</h3>

* wp coyomi status – data files and last rebuild

* wp coyomi rebuild – rebuild all data files

* wp coyomi compare lwac_calendar-2 – run the legacy per-month queries once and compare the days

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • archives
  • calendar
  • performance
  • widget
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 5.5 · PHP 7.4
Update activity20 Oct 202613d ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

No tracked version or compatibility changes have been recorded by WP PlugIndex yet.

Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.