{"id":340805,"date":"2026-08-13T10:49:47","date_gmt":"2026-08-13T10:49:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/waktu-solat-my\/"},"modified":"2026-08-13T10:49:21","modified_gmt":"2026-08-13T10:49:21","slug":"aqilzikry-waktu-solat-malaysia","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/aqilzikry-waktu-solat-malaysia\/","author":23533076,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.5.0","stable_tag":"1.5.0","tested":"7.0.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Aqil Zikry Waktu Solat Malaysia","header_author":"Aqil Zikry","header_description":"Malaysian prayer times (waktu solat) from the official JAKIM e-Solat API \u2014 Gutenberg block, Elementor widget, shortcode, selectable themes and a live countdown.","assets_banners_color":"c3b8a6","last_updated":"2026-08-13 10:49:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/aqilzikry.my","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.5.0":{"tag":"1.5.0","author":"aqilzikry","date":"2026-08-13 10:49:21"}},"upgrade_notice":{"1.4.0":"<p>The shortcode is now [wsmy_waktu_solat] and the Elementor widget key changed. Re-add any existing shortcodes and Elementor widgets after updating.<\/p>","1.2.0":"<p>Adds the Gutenberg block and translation support. No breaking changes.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3644980,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3644980,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"aqilzikry-waktu-solat-malaysia\/card":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"aqilzikry-waktu-solat-malaysia\/card","version":"1.5.0","title":"Waktu Solat","category":"widgets","icon":"clock","description":"Malaysian prayer times from the official JAKIM e-Solat API, with themes and a live countdown.","keywords":["waktu","solat","prayer","jakim","esolat","islam"],"textdomain":"aqilzikry-waktu-solat-malaysia","attributes":{"title":{"type":"string","default":"Prayer Times"},"zone":{"type":"string","default":""},"theme":{"type":"string","default":""},"layout":{"type":"string","default":""},"countdown":{"type":"boolean","default":true},"showImsak":{"type":"boolean","default":true}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"wsmy-block-editor"}},"tagged_versions":["1.5.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3644980,"resolution":"1","location":"assets","locale":"","width":1604,"height":986},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3644980,"resolution":"2","location":"assets","locale":"","width":1478,"height":854}},"screenshots":{"1":"Midnight theme \u2014 full card with the live countdown to the next prayer and the current prayer highlighted.","2":"Emerald theme \u2014 the same card in the default dark green and gold palette."}},"plugin_section":[],"plugin_tags":[275504,275503,12487,22604,64098],"plugin_category":[],"plugin_contributors":[275505],"plugin_business_model":[],"class_list":["post-340805","plugin","type-plugin","status-publish","hentry","plugin_tags-esolat","plugin_tags-jakim","plugin_tags-malaysia","plugin_tags-prayer-times","plugin_tags-waktu-solat","plugin_contributors-aqilzikry","plugin_committers-aqilzikry"],"banners":{"banner":"https:\/\/ps.w.org\/aqilzikry-waktu-solat-malaysia\/assets\/banner-772x250.png?rev=3644980","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aqilzikry-waktu-solat-malaysia\/assets\/icon-256x256.png?rev=3644980","icon_2x":"https:\/\/ps.w.org\/aqilzikry-waktu-solat-malaysia\/assets\/icon-256x256.png?rev=3644980","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aqilzikry-waktu-solat-malaysia\/assets\/screenshot-1.png?rev=3644980","caption":"Midnight theme \u2014 full card with the live countdown to the next prayer and the current prayer highlighted."},{"src":"https:\/\/ps.w.org\/aqilzikry-waktu-solat-malaysia\/assets\/screenshot-2.png?rev=3644980","caption":"Emerald theme \u2014 the same card in the default dark green and gold palette."}],"raw_content":"<!--section=description-->\n<p>Aqil Zikry Waktu Solat Malaysia displays accurate daily prayer times for all Malaysian JAKIM zones in a beautiful, responsive card:<\/p>\n\n<ul>\n<li><strong>Official data<\/strong> \u2014 fetched directly from JAKIM's e-Solat API, cached once per day so your site never hammers the government server.<\/li>\n<li><strong>All 60+ zones<\/strong> \u2014 every state, grouped and searchable.<\/li>\n<li><strong>Three ways to add it<\/strong> \u2014 a Gutenberg block, a native Elementor widget (drag &amp; drop, with live styling controls), or the <code>[wsmy_waktu_solat]<\/code> shortcode.<\/li>\n<li><strong>Three built-in themes<\/strong> \u2014 Emerald (dark green &amp; gold), Light (white &amp; green), Midnight (deep navy). Site-wide defaults are set under the <em>Waktu Solat<\/em> admin menu; every block\/widget\/shortcode can override them.<\/li>\n<li><strong>Live countdown<\/strong> \u2014 highlights the current prayer and counts down to the next one, updating every second.<\/li>\n<li><strong>Two layouts<\/strong> \u2014 a full card for content areas and a compact card for sidebars and footers.<\/li>\n<li><strong>Translation-ready<\/strong> \u2014 all strings use the <code>aqilzikry-waktu-solat-malaysia<\/code> text domain.<\/li>\n<\/ul>\n\n<h4>Shortcode examples<\/h4>\n\n<ul>\n<li><code>[wsmy_waktu_solat]<\/code> \u2014 site defaults.<\/li>\n<li><code>[wsmy_waktu_solat zone=\"WLY01\" theme=\"light\"]<\/code> \u2014 Kuala Lumpur, light theme.<\/li>\n<li><code>[wsmy_waktu_solat zone=\"SGR01\" layout=\"compact\" countdown=\"no\" imsak=\"no\"]<\/code> \u2014 compact sidebar version.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on one external service: the <strong>JAKIM e-Solat API<\/strong>, the official prayer-times service of Jabatan Kemajuan Islam Malaysia (JAKIM), the Department of Islamic Development Malaysia.<\/p>\n\n<p><strong>What the service is and why it is used<\/strong><\/p>\n\n<p>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.<\/p>\n\n<p><strong>What data is sent, and when<\/strong><\/p>\n\n<ul>\n<li><strong>Endpoint:<\/strong> <code>https:\/\/www.e-solat.gov.my\/index.php?r=esolatApi\/takwimsolat&amp;period=today&amp;zone=ZONE<\/code><\/li>\n<li><strong>What is sent:<\/strong> only the selected zone code (for example <code>SGR01<\/code>) and the fixed period value <code>today<\/code>. 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.<\/li>\n<li><strong>When:<\/strong> 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.<\/li>\n<\/ul>\n\n<p><strong>Provider and legal terms<\/strong><\/p>\n\n<ul>\n<li><strong>Provider:<\/strong> Jabatan Kemajuan Islam Malaysia (JAKIM) \u2014 https:\/\/www.e-solat.gov.my\/<\/li>\n<li><strong>Privacy policy (Dasar Privasi):<\/strong> https:\/\/www.e-solat.gov.my\/ \u2014 JAKIM does not publish its policies at separate URLs. The <em>Dasar Privasi<\/em> and <em>Dasar Keselamatan<\/em> 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.<\/li>\n<li><strong>Terms of use:<\/strong> JAKIM does not publish a separate terms-of-service document for the e-Solat portal. The <em>Piagam Pelanggan<\/em> (client charter) and the security policy, both linked in the same footer, are the governing notices it publishes.<\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP via <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>, or unzip it into <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate it.<\/li>\n<li>Set your default zone, theme and layout under the <em>Waktu Solat<\/em> admin menu.<\/li>\n<li>Add the \"Waktu Solat\" block in the editor, drag the \"Waktu Solat\" widget in Elementor, or place the <code>[wsmy_waktu_solat]<\/code> shortcode anywhere.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20does%20the%20data%20come%20from%3F\"><h3>Where does the data come from?<\/h3><\/dt>\n<dd><p>From JAKIM's official e-Solat API \u2014 the same source used by government portals such as the Selangor Mufti Department website. See \"External services\" above.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20my%20site%20down%3F\"><h3>Does it slow my site down?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"which%20zones%20are%20supported%3F\"><h3>Which zones are supported?<\/h3><\/dt>\n<dd><p>All JAKIM zones for every Malaysian state and federal territory (Johor to Labuan).<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20elementor%3F\"><h3>Does it work without Elementor?<\/h3><\/dt>\n<dd><p>Yes. Elementor is optional \u2014 the Gutenberg block and shortcode work with any theme. The Elementor widget simply appears automatically when Elementor is active.<\/p><\/dd>\n<dt id=\"can%20i%20change%20the%20colors%3F\"><h3>Can I change the colors?<\/h3><\/dt>\n<dd><p>Pick one of the three themes, or (in Elementor) override the accent color, corner radius and width per widget. Developers can also override the <code>--wsmy-*<\/code> CSS custom properties.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.5.0<\/h4>\n\n<ul>\n<li>Change: name and text domain finalised as Aqil Zikry Waktu Solat Malaysia \/ <code>aqilzikry-waktu-solat-malaysia<\/code>. The plugin is published by an individual author and is not affiliated with any company.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Change: the shortcode is now <code>[wsmy_waktu_solat]<\/code> (was <code>[waktu_solat]<\/code>) and the Elementor widget key is now <code>wsmy-waktu-solat<\/code>, so neither can collide with another plugin. Existing shortcodes and Elementor widgets must be re-added.<\/li>\n<li>Improved: full disclosure of the JAKIM e-Solat external service in the readme, including endpoint, data sent, timing and the provider's published policies.<\/li>\n<li>Fixed: the Elementor stylesheet and script were being enqueued on every Elementor front-end page instead of only where a card is rendered.<\/li>\n<li>Fixed: transient expiry now uses the site timezone via <code>wp_timezone()<\/code> instead of the deprecated <code>current_time( 'timestamp' )<\/code> pattern.<\/li>\n<li>Fixed: uninstall cleanup now uses <code>$wpdb-&gt;prepare()<\/code> with <code>esc_like()<\/code>.<\/li>\n<li>Removed: the <code>Plugin URI<\/code> header, which pointed at a page that did not exist.<\/li>\n<li>Removed: <code>preview.html<\/code>, a development-only file that was shipping with the plugin.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Standardised the internal <code>wsmy_<\/code> prefix across options, functions and asset handles.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fix: JAKIM returns status \"OK!\" \u2014 the response validation was rejecting valid data (\"Unexpected data format\" error).<\/li>\n<li>Change: settings now live in their own top-level \"Waktu Solat\" admin menu (was under Settings).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: Gutenberg block (server-rendered, with zone\/theme\/layout controls).<\/li>\n<li>New: full internationalization + POT file.<\/li>\n<li>New: uninstall cleanup (options + cached transients, multisite aware).<\/li>\n<li>New: \"Settings\" link on the Plugins screen.<\/li>\n<li>Improved: stricter validation of zone\/theme\/layout options.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: settings page (default zone, theme, layout).<\/li>\n<li>New: Elementor widget with live controls.<\/li>\n<li>New: Light and Midnight themes; compact layout.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: shortcode, Emerald card, JAKIM API with daily caching, countdown.<\/li>\n<\/ul>","raw_excerpt":"Malaysian prayer times (waktu solat) from the official JAKIM e-Solat API \u2014 Gutenberg block, Elementor widget, shortcode, themes and live countdown.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/340805","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=340805"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aqilzikry"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=340805"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=340805"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=340805"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=340805"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=340805"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=340805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}