Description
Aqil Zikry Waktu Solat Malaysia displays accurate daily prayer times for all Malaysian JAKIM zones in a beautiful, responsive card:
- Official data — fetched directly from JAKIM’s e-Solat API, cached once per day so your site never hammers the government server.
- All 60+ zones — every state, grouped and searchable.
- Three ways to add it — a Gutenberg block, a native Elementor widget (drag & drop, with live styling controls), or the
[wsmy_waktu_solat]shortcode. - Three built-in themes — Emerald (dark green & gold), Light (white & green), Midnight (deep navy). Site-wide defaults are set under the Waktu Solat admin menu; every block/widget/shortcode can override them.
- Live countdown — highlights the current prayer and counts down to the next one, updating every second.
- Two layouts — a full card for content areas and a compact card for sidebars and footers.
- Translation-ready — all strings use the
aqilzikry-waktu-solat-malaysiatext domain.
Shortcode examples
[wsmy_waktu_solat]— site defaults.[wsmy_waktu_solat zone="WLY01" theme="light"]— Kuala Lumpur, light theme.[wsmy_waktu_solat zone="SGR01" layout="compact" countdown="no" imsak="no"]— compact sidebar version.
External services
This plugin relies on one external service: the JAKIM e-Solat API, the official prayer-times service of Jabatan Kemajuan Islam Malaysia (JAKIM), the Department of Islamic Development Malaysia.
What the service is and why it is used
The plugin cannot calculate prayer times on its own. It requests the official daily prayer schedule for the JAKIM zone you select so that the card can display accurate, government-published times.
What data is sent, and when
- Endpoint:
https://www.e-solat.gov.my/index.php?r=esolatApi/takwimsolat&period=today&zone=ZONE - What is sent: only the selected zone code (for example
SGR01) and the fixed period valuetoday. No personal data, visitor data, IP-identifying data or site data is added to the request by this plugin. As with any outbound HTTP request, your web server’s own IP address is visible to the receiving server. - When: server-side only, at most once per zone per day. Responses are cached with the WordPress Transients API until just after midnight in your site’s timezone. Requests are never made from the visitor’s browser, so visitors never contact JAKIM directly.
Provider and legal terms
- Provider: Jabatan Kemajuan Islam Malaysia (JAKIM) — https://www.e-solat.gov.my/
- Privacy policy (Dasar Privasi): https://www.e-solat.gov.my/ — JAKIM does not publish its policies at separate URLs. The Dasar Privasi and Dasar Keselamatan notices are published on the e-Solat home page itself and open from the links in the site footer. The privacy notice states that no personal information is collected while browsing the site.
- Terms of use: JAKIM does not publish a separate terms-of-service document for the e-Solat portal. The Piagam Pelanggan (client charter) and the security policy, both linked in the same footer, are the governing notices it publishes.
This plugin is not affiliated with, endorsed by, or sponsored by JAKIM. “JAKIM” and “e-Solat” are used only to identify the source of the data.
Screenshots


Blocks
This plugin provides 1 block.
- Waktu Solat Malaysian prayer times from the official JAKIM e-Solat API, with themes and a live countdown.
Installation
- Upload the plugin ZIP via Plugins Add New Upload Plugin, or unzip it into
/wp-content/plugins/. - Activate it.
- Set your default zone, theme and layout under the Waktu Solat admin menu.
- Add the “Waktu Solat” block in the editor, drag the “Waktu Solat” widget in Elementor, or place the
[wsmy_waktu_solat]shortcode anywhere.
FAQ
-
Where does the data come from?
-
From JAKIM’s official e-Solat API — the same source used by government portals such as the Selangor Mufti Department website. See “External services” above.
-
Does it slow my site down?
-
No. Times are fetched server-side at most once per zone per day and cached with the Transients API. CSS/JS load only on pages that actually display the card.
-
Which zones are supported?
-
All JAKIM zones for every Malaysian state and federal territory (Johor to Labuan).
-
Does it work without Elementor?
-
Yes. Elementor is optional — the Gutenberg block and shortcode work with any theme. The Elementor widget simply appears automatically when Elementor is active.
-
Can I change the colors?
-
Pick one of the three themes, or (in Elementor) override the accent color, corner radius and width per widget. Developers can also override the
--wsmy-*CSS custom properties.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Aqil Zikry Waktu Solat Malaysia” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Aqil Zikry Waktu Solat Malaysia” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.5.0
- Change: name and text domain finalised as Aqil Zikry Waktu Solat Malaysia /
aqilzikry-waktu-solat-malaysia. The plugin is published by an individual author and is not affiliated with any company.
1.4.0
- Change: the shortcode is now
[wsmy_waktu_solat](was[waktu_solat]) and the Elementor widget key is nowwsmy-waktu-solat, so neither can collide with another plugin. Existing shortcodes and Elementor widgets must be re-added. - Improved: full disclosure of the JAKIM e-Solat external service in the readme, including endpoint, data sent, timing and the provider’s published policies.
- Fixed: the Elementor stylesheet and script were being enqueued on every Elementor front-end page instead of only where a card is rendered.
- Fixed: transient expiry now uses the site timezone via
wp_timezone()instead of the deprecatedcurrent_time( 'timestamp' )pattern. - Fixed: uninstall cleanup now uses
$wpdb->prepare()withesc_like(). - Removed: the
Plugin URIheader, which pointed at a page that did not exist. - Removed:
preview.html, a development-only file that was shipping with the plugin.
1.3.0
- Standardised the internal
wsmy_prefix across options, functions and asset handles.
1.2.1
- Fix: JAKIM returns status “OK!” — the response validation was rejecting valid data (“Unexpected data format” error).
- Change: settings now live in their own top-level “Waktu Solat” admin menu (was under Settings).
1.2.0
- New: Gutenberg block (server-rendered, with zone/theme/layout controls).
- New: full internationalization + POT file.
- New: uninstall cleanup (options + cached transients, multisite aware).
- New: “Settings” link on the Plugins screen.
- Improved: stricter validation of zone/theme/layout options.
1.1.0
- New: settings page (default zone, theme, layout).
- New: Elementor widget with live controls.
- New: Light and Midnight themes; compact layout.
1.0.0
- Initial release: shortcode, Emerald card, JAKIM API with daily caching, countdown.
