{"id":8248,"date":"2010-02-26T15:50:53","date_gmt":"2010-02-26T15:50:53","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/orthodox-calendar\/"},"modified":"2026-09-18T17:12:26","modified_gmt":"2026-09-18T17:12:26","slug":"orthodox-calendar","status":"publish","type":"plugin","link":"https:\/\/da.wordpress.org\/plugins\/orthodox-calendar\/","author":5811641,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Orthodox Calendar","header_author":"David Leselidze","header_description":"","assets_banners_color":"","last_updated":"2026-09-18 17:12:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.holytrinityorthodox.com\/calendar\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":60,"downloads":4067,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0":{"tag":"1.0","author":"davidbrush","date":"2019-09-15 00:18:48","revision":2156651},"1.1":{"tag":"1.1","author":"davidbrush","date":"2019-09-15 02:37:16","revision":2156677},"1.2.0":{"tag":"1.2.0","author":"davidbrush","date":"2026-09-13 19:37:30","revision":3694123},"1.3.0":{"tag":"1.3.0","author":"davidbrush","date":"2026-09-18 17:12:26","revision":3702391}},"upgrade_notice":{"1.3.0":"<p>Adds administrator-controlled English\/Russian calendar selection and language-specific Holy Trinity Orthodox Calendar endpoints.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0","1.1","1.2.0","1.3.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[416,7012,6970,30472,1114],"plugin_category":[40,43],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-8248","plugin","type-plugin","status-publish","hentry","plugin_tags-calendar","plugin_tags-christian","plugin_tags-church","plugin_tags-orthodox","plugin_tags-russian","plugin_category-calendar-and-events","plugin_category-customization","plugin_committers-davidbrush"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/orthodox-calendar.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Orthodox Calendar displays daily Orthodox calendar information from Holy Trinity Orthodox Church.<\/p>\n\n<p>The plugin language is selected by an administrator in Settings &gt; Orthodox Calendar. The selected language determines the calendar service URL, remote endpoint, widget title, and navigation messages.<\/p>\n\n<p>English configuration:<\/p>\n\n<ul>\n<li>Title: Orthodox Calendar<\/li>\n<li>Site: https:\/\/www.holytrinityorthodox.com\/calendar\/<\/li>\n<li>Remote endpoint: https:\/\/www.holytrinityorthodox.com\/calendar\/calendar2.php<\/li>\n<\/ul>\n\n<p>Russian configuration:<\/p>\n\n<ul>\n<li>Title: \u041f\u0440\u0430\u0432\u043e\u0441\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c<\/li>\n<li>Site: https:\/\/www.holytrinityorthodox.com\/ru\/calendar\/<\/li>\n<li>Remote endpoint: https:\/\/www.holytrinityorthodox.com\/ru\/calendar\/calendar2.php<\/li>\n<\/ul>\n\n<p>The Russian remote endpoint is normalized to HTTPS.<\/p>\n\n<p>Features include:<\/p>\n\n<ul>\n<li>English or Russian language selection as a plugin option.<\/li>\n<li>Display the current day's Orthodox Calendar.<\/li>\n<li>Navigate to the previous day.<\/li>\n<li>Return to today's date.<\/li>\n<li>Navigate to the next day.<\/li>\n<li>Uses the WordPress HTTP API.<\/li>\n<li>Uses the WordPress AJAX API.<\/li>\n<li>Sanitizes and validates incoming data.<\/li>\n<li>Escapes output according to WordPress coding standards.<\/li>\n<li>Uses a strict HTML allowlist for remote content.<\/li>\n<li>Validates remote links and images against the selected Holy Trinity calendar path.<\/li>\n<li>Converts the remote Windows-1251 calendar response to UTF-8.<\/li>\n<li>Uses WordPress transients to reduce remote requests.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>orthodox-calendar<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the WordPress Plugins screen.<\/li>\n<li>Go to Settings &gt; Orthodox Calendar and choose English or Russian.<\/li>\n<li>Go to Appearance &gt; Widgets and add the \"Orthodox Calendar\" widget to a sidebar.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20choose%20the%20language%3F\"><h3>How do I choose the language?<\/h3><\/dt>\n<dd><p>Go to Settings &gt; Orthodox Calendar and select English or \u0420\u0443\u0441\u0441\u043a\u0438\u0439. English is the default.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20use%20file_get_contents%28%29%3F\"><h3>Does the plugin use file_get_contents()?<\/h3><\/dt>\n<dd><p>No. The plugin uses the WordPress HTTP API with <code>wp_remote_get()<\/code>.<\/p><\/dd>\n<dt id=\"is%20calendar%20information%20cached%3F\"><h3>Is calendar information cached?<\/h3><\/dt>\n<dd><p>Yes. Calendar responses are sanitized and cached temporarily using the WordPress Transients API. English and Russian responses use separate cache keys.<\/p><\/dd>\n<dt id=\"does%20the%20remote%20calendar%20use%20windows-1251%3F\"><h3>Does the remote calendar use Windows-1251?<\/h3><\/dt>\n<dd><p>Yes. The remote calendar response is converted from Windows-1251 to UTF-8 before sanitization and display.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added English\/Russian language selection as a WordPress plugin option.<\/li>\n<li>Added Settings &gt; Orthodox Calendar.<\/li>\n<li>Added language-specific calendar site URLs and remote endpoints.<\/li>\n<li>Added English and Russian widget titles and navigation messages.<\/li>\n<li>Added language to transient cache keys.<\/li>\n<li>Added strict URL path validation for the selected calendar language.<\/li>\n<li>Preserved the WordPress HTTP API and AJAX architecture.<\/li>\n<li>Preserved the strict remote HTML allowlist and output escaping.<\/li>\n<li>Preserved Windows-1251 to UTF-8 conversion.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Modernized plugin structure.<\/li>\n<li>Replaced deprecated plugin path constants.<\/li>\n<li>Replaced direct remote requests with the WordPress HTTP API.<\/li>\n<li>Removed <code>file_get_contents()<\/code>.<\/li>\n<li>Removed <code>get_headers()<\/code>.<\/li>\n<li>Replaced the standalone PHP proxy with the WordPress AJAX API.<\/li>\n<li>Added nonce verification.<\/li>\n<li>Added sanitization and validation of AJAX input.<\/li>\n<li>Added output escaping.<\/li>\n<li>Added transient caching.<\/li>\n<li>Moved JavaScript to a separate file.<\/li>\n<li>Updated widget registration.<\/li>\n<li>Improved accessibility of navigation buttons.<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Previous version.<\/li>\n<\/ul>","raw_excerpt":"Displays the Orthodox Calendar from Holy Trinity Orthodox Church in English or Russian.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/8248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=8248"}],"author":[{"embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/davidbrush"}],"wp:attachment":[{"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=8248"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=8248"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=8248"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=8248"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=8248"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/da.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=8248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}