=== Indesign Nepali Post Date ===
Contributors: indesignmedia
Author: Indesign Media
Author URI: https://indesignmedia.net
Plugin URI: https://indesignmedia.net/wordpress-plugins/indesign-nepali-post-date/
Tags: nepali date, nepali calendar, bikram sambat, BS date, nepali post date
Requires at least: 5.3
Tested up to: 6.9
Requires PHP: 8.2
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Professional Bikram Sambat (BS) date conversion plugin for WordPress. Lightweight, standalone, and lightning fast.

== Description ==

**Indesign Nepali Post Date** converts Gregorian (AD) dates into Bikram Sambat (BS) Nepali dates directly within WordPress — with full support for Nepali glyphs, localized month and weekday names, and flexible formatting.

It is built for Nepali news portals, blogs, and any website that must display publish dates, modified dates, or today's date in the Nepali calendar format, as required by Nepal Press Council regulations.

**Key highlights:**

* Converts any AD date to BS with Nepali or English numerals
* Displays Nepali month names (e.g. असार) and weekday names (e.g. मंगलबार)
* Fully configurable date format pattern via the admin settings panel
* Optional CSS wrapper class for easy styling
* Three ready-to-use shortcodes — no coding required
* Two global PHP functions and a namespaced static API for developers
* WordPress filter hook to customize output programmatically
* Supports BS 2000–2101 (AD 1943–2044)
* Built on PHP 8.2 Enums for robust, type-safe localization
* Zero external dependencies — no jQuery, no REST calls

== Features ==

= Shortcodes =

* **[indnpd_post_date]** — Outputs the current post's publish date in BS. Accepts optional `format` and `lang` attributes.
* **[indnpd_today_date]** — Outputs today's live BS date. Ideal for headers, footers, sidebars, or widgets. Accepts optional `format` and `lang` attributes.
* **[indnpd_number number="123"]** — Converts any number to Nepali glyphs (e.g. 123 → १२३). Accepts optional `lang` attribute.

= PHP Functions =

* `id_nepali_post_date_get( $datetime )` — Converts a date string or timestamp to a formatted BS string.
* `id_nepali_post_date_today()` — Returns today's date in BS.
* `id_nepali_post_date_convert( $number )` — Converts a number to Nepali glyphs.
* `indnpd_get_date( $timestamp, $format, $lang )` — Modern namespaced helper with full format and language control.

= Developer API =

* `\IndesignMedia\NPD\Manager::convert( $timestamp, $format, $lang )` — Static method for advanced integration.
* `indesign_nepali_post_date_output` filter — Hook into every date output to wrap or modify HTML.

= Date Format Tokens =

| Token | Output |
|-------|--------|
| `d`   | Day number |
| `m`   | Month number |
| `M`   | Month name (e.g. असार) |
| `y`   | 2-digit year |
| `Y`   | 4-digit year |
| `l`   | Weekday name (e.g. मंगलबार) |

= Admin Settings Panel =

* **Localization Style** — Choose Traditional Nepali glyphs (०१२) or Global English digits (012).
* **Date Pattern** — Define a custom format string using the tokens above.
* **CSS Wrapper Class** — Optionally wrap all date output in `<span class="your-class">` for targeted styling.
* **Real-time Preview** — The settings page shows a live preview of the current BS date as you configure.

== Screenshots ==

1. Admin settings panel with live preview
2. Front-end date display

== Installation ==

1. Upload the `indesign-nepali-post-date` folder to the `/wp-content/plugins/` directory, or install it directly through the WordPress plugin screen.
2. Activate the plugin through the **Plugins** screen in WordPress.
3. Go to **Settings → Indesign Nepali Post Date** to configure the date format, localization style, and optional CSS class.
4. Add a shortcode such as `[indnpd_post_date]` or `[indnpd_today_date]` anywhere in your content.

== Frequently Asked Questions ==

= What calendar system does this plugin use? =

The plugin converts dates from the Gregorian calendar (AD) to the Bikram Sambat (BS) calendar — the official calendar of Nepal. For example, AD 2024 corresponds approximately to BS 2081.

= What date range is supported? =

The plugin supports BS 2000 to BS 2101, which corresponds to AD 1943-04-14 through AD 2044. Dates outside this range will be returned as-is without conversion.

= How do I display the post date in Nepali inside my theme template? =

Use the global PHP function anywhere inside The Loop:

`<?php echo id_nepali_post_date_get( get_the_date('Y-m-d H:i:s') ); ?>`

Or use the namespaced helper for more control:

`<?php echo indnpd_get_date( get_the_date('Y-m-d H:i:s'), 'd M Y, l', 'nepali' ); ?>`

= Can I use English digits instead of Nepali glyphs? =

Yes. Go to **Settings → Indesign Nepali Post Date** and set **Localization Style** to **Global English (0123)**. You can also override this per shortcode using the `lang` attribute:

`[indnpd_post_date lang="english"]`

Or per function call by passing `"english"` as the third argument to `indnpd_get_date()`.

= Can I customize the date format? =

Yes. In the settings panel, enter a custom **Date Pattern** using the supported tokens: `d` (day), `m` (month number), `M` (month name), `y` (2-digit year), `Y` (4-digit year), `l` (weekday name). For example, `d M Y, l` outputs २५ असार २०८१, मंगलबार.

You can also pass a custom format directly in a shortcode: `[indnpd_post_date format="d M Y"]`

= How do I hook into the date output programmatically? =

Use the `indesign_nepali_post_date_output` WordPress filter. It passes three arguments: the formatted HTML string, the BS date array, and the Unix timestamp.

`add_filter( 'indesign_nepali_post_date_output', function( $html, $bs, $unix ) {
    return '<span class="nepali-badge">' . $html . '</span>';
}, 10, 3 );`

== Changelog ==

= 1.0.0 =
* Initial release.
* BS date conversion via shortcodes and PHP functions.
* Supports BS 2000–2101 (AD 1943–2044).
* PHP 8.2 Enum-based localization engine for month and weekday names.
* Configurable date format tokens: d, m, M, y, Y, l.
* Localization style toggle: Traditional Nepali glyphs or English digits.
* Optional CSS wrapper class for date output.
* Real-time date preview on the admin settings page.
* `indesign_nepali_post_date_output` filter for developer customization.
* `indnpd_get_date()` namespaced helper function.
* `Manager::convert()` static API method.
* Verified compatible with WordPress 6.9+.

== Developers ==

Built and maintained by **Indesign Media** — https://indesignmedia.net

For professional support, custom development, or integration assistance, visit the plugin page or contact us directly.
