Title: EffortLess Timeline Posts
Author: domclic
Published: <strong>21. Mee 2026</strong>
Last modified: 21. Mee 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/effortless-timeline-posts.svg)

# EffortLess Timeline Posts

 By [domclic](https://profiles.wordpress.org/domclic/)

[Download](https://downloads.wordpress.org/plugin/effortless-timeline-posts.1.0.32.zip)

 * [Details](https://ltz.wordpress.org/plugins/effortless-timeline-posts/#description)
 * [Reviews](https://ltz.wordpress.org/plugins/effortless-timeline-posts/#reviews)
 *  [Installation](https://ltz.wordpress.org/plugins/effortless-timeline-posts/#installation)
 * [Development](https://ltz.wordpress.org/plugins/effortless-timeline-posts/#developers)

 [Support](https://wordpress.org/support/plugin/effortless-timeline-posts/)

## Description

Creates a custom post type “Timeline” with date/year meta, categories, and shortcode[
timeline] for chronological display. Supports full dates, durations, custom labels,
year-only mode. Admin columns sortable by date/year.

### Usage

 * Full Date: Set start/end, optional custom display.
 * Year Only: Large year display.
 * Sorted automatically by `_sort_timestamp`.

## Installation

 1. Upload plugin folder to `/wp-content/plugins/`.
 2. Activate via Plugins menu.
 3. Add entries under “Timeline” post type.
 4. Use `[timeline]` shortcode in pages/posts.

Attributes: `limit` (default -1), `category` (slug), `order` (ASC/DESC).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“EffortLess Timeline Posts” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ domclic ](https://profiles.wordpress.org/domclic/)

[Translate “EffortLess Timeline Posts” into your language.](https://translate.wordpress.org/projects/wp-plugins/effortless-timeline-posts)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/effortless-timeline-posts/),
check out the [SVN repository](https://plugins.svn.wordpress.org/effortless-timeline-posts/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/effortless-timeline-posts/)
by [RSS](https://plugins.trac.wordpress.org/log/effortless-timeline-posts/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.32

 * WordPress 7.0 update

#### 1.0.31

 * Fix: completed eltlp_ prefix rename — settings page HTML form attributes (id,
   name, for) and color-picker CSS class were still using etp_ prefix; all updated
   to eltlp_.

#### 1.0.30

 * Security: replaced $_GET[‘post’] in admin_notices() with global $post object —
   no nonce required for a read-only post ID lookup.
 * Fix: renamed CPT to eltlp_timeline, taxonomy to eltlp_timeline_cat, shortcode
   to [eltlp_timeline], all option/transient keys to eltlp_ prefix, class to ELTLP_Timeline_Posts,
   constant to ELTLP_VERSION.

#### 1.0.29

 * Fix: added inline phpcs:ignore on the constant and class declaration so Plugin
   Check suppresses PrefixAllGlobals warnings regardless of its prefix configuration.

#### 1.0.28

 * Fix: constant renamed to EFFORTLESS_TIMELINE_POSTS_VERSION and class to Effortless_Timeline_Posts
   to match the slug-derived prefix that Plugin Check enforces.

#### 1.0.27

 * Fix: renamed class to EffortLess_TimeLine_Posts; updated phpcs.xml to declare
   ELTLP_ and EffortLess_TimeLine_Posts_ as valid prefixes.

#### 1.0.26

 * Fix: renamed version constant to ELTLP_VERSION and updated phpcs.xml to declare
   eltlp_/ELTLP_ as the canonical plugin prefix.

#### 1.0.25

 * Fix: renamed constant ETP_VERSION  EFFORTLESS_TIMELINE_POSTS_VERSION and class
   EffortLess_Timeline_Posts  Effortless_Timeline_Posts to satisfy WordPress.NamingConventions.
   PrefixAllGlobals.
 * Code: added phpcs.xml with explicit prefix configuration so local PHPCS enforces
   the same rule.

#### 1.0.24

 * Code: rewrote timeline-script.js to pass WordPress PHPCS standard (tabs, multi-
   line call formatting, @package tag, period-terminated inline comments).

#### 1.0.23

 * Improvement: “Show Era Boundary” toggle — displays a styled divider line between
   BC and AD entries on the timeline.
 * Improvement: “Era Terminology” radio — choose BC/AD (traditional) or BCE/CE (
   modern). Applies to year labels and the divider.

#### 1.0.22

 * Improvement: Settings > “Show Year Labels” toggle — uncheck to hide the year 
   column and display a compact full-width timeline.
 * Improvement: any change to a plugin setting now automatically busts the shortcode
   transient cache.

#### 1.0.21

 * Improvement: year field now accepts BC dates (-9999 to 9999). Enter -2580 for
   2580 BC.
 * Improvement: BC years display as “2580 BC” on the timeline and in admin columns.
 * Fix: negative years were stripped to positive by absint(); now uses intval() 
   to preserve sign.
 * Fix: sort timestamp falls back to year × 31 557 600 when strtotime() cannot parse
   ancient dates.

#### 1.0.20

 * Improvement: “Show Today” toggle in Settings — displays a hollow marker at today’s
   date position, sorted correctly among all entries. Works even with no real entries.
   Bypasses transient cache while active.

#### 1.0.19

 * Fix: entries dated exactly 1970 (Unix epoch, timestamp = 0) were incorrectly 
   filtered out and never displayed.

#### 1.0.18

 * Improvement: added Settings page under Timeline menu with shortcode reference(
   all attributes, defaults, examples) and existing categories with ready-to-use
   shortcodes.
 * Improvement: color pickers on Settings page let admins change the timeline line
   color and dot color without editing CSS.

#### 1.0.17

 * Fix: replace named global function in uninstall.php with call_user_func closure
   to eliminate global namespace warnings.

#### 1.0.16

 * Fix: wrap uninstall logic in a prefixed function to avoid global variable scope
   warnings.

#### 1.0.15

 * Fix: removed load_plugin_textdomain() — WordPress auto-loads translations since
   4.6.
 * Fix: prefixed global variables in uninstall.php to avoid namespace collisions.
 * Fix: added phpcs:ignore for the_content core hook (not a custom hook).
 * Fix: updated “Tested up to” to WordPress 6.9.

#### 1.0.14

 * Improvement: CSS and JS now load only on pages that use the [timeline] shortcode.
 * Improvement: activation and deactivation hooks flush rewrite rules so CPT slugs
   work immediately.
 * Improvement: added uninstall.php to clean up plugin meta keys and transients 
   on deletion.
 * Improvement: meta fields registered via register_post_meta() for REST API and
   block editor access.
 * Improvement: shortcode output cached with transients; cache busts automatically
   on save or delete.
 * Improvement: recursion guard prevents infinite loop if [timeline] appears in 
   an entry’s content.
 * Improvement: new heading shortcode attribute (h2–h6) for correct document outline
   control.
 * Improvement: timeline wrapper gets role=”region” and aria-label; marker gets 
   aria-hidden; articles get aria-label.
 * Improvement: admin notices shown when date/year fields are silently cleared by
   validation.
 * Improvement: featured image (thumbnail) added to CPT supports.
 * Improvement: menu_position changed from 5 (conflicts with Posts) to 20.
 * Improvement: generated languages/effortless-timeline-posts.pot for translators.

#### 1.0.13

 * Security: validate year_only as integer clamped to 1900–2100 (server-side).
 * Security: reject full_date/end_date that don’t match YYYY-MM-DD format.
 * Fix: format_date() returns empty string instead of “January 1, 1970” for invalid
   dates.
 * Fix: correct phpcs:ignore sniff name on virtual stylesheet handle.

#### 1.0.12

 * Fix: allowlist `_date_type` values to prevent arbitrary meta storage.
 * Fix: guard `strtotime()` return value before writing timestamp/year meta.
 * Fix: apply category filter before limit so `limit` counts filtered results.
 * Fix: admin sort direction now respects the URL `order` parameter.
 * Fix: shortcode output wrapped in `.timeline-dotcom` container (CSS max-width 
   was broken).
 * Fix: prime post meta cache before loop (single DB query instead of N×6).
 * Fix: load plugin textdomain so translations work.
 * Fix: move meta box inline CSS and JS to properly enqueued handles.
 * Fix: use `ETP_VERSION` constant for asset versioning.

#### 1.0.11

 * Code: fix all PHPCS WordPress standard violations (tabs, alignment, short ternary,
   globals, comment style).

#### 1.0.10

 * Initial release.

## Meta

 *  Version **1.0.32**
 *  Last updated **10 Stonnen ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.0 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 7.0 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/effortless-timeline-posts/)
 * Tags
 * [chronology](https://ltz.wordpress.org/plugins/tags/chronology/)[custom post type](https://ltz.wordpress.org/plugins/tags/custom-post-type/)
   [history](https://ltz.wordpress.org/plugins/tags/history/)[shortcode](https://ltz.wordpress.org/plugins/tags/shortcode/)
   [timeline](https://ltz.wordpress.org/plugins/tags/timeline/)
 *  [Advanced View](https://ltz.wordpress.org/plugins/effortless-timeline-posts/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/effortless-timeline-posts/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/effortless-timeline-posts/reviews/)

## Contributors

 *   [ domclic ](https://profiles.wordpress.org/domclic/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/effortless-timeline-posts/)