{"id":341687,"date":"2026-07-22T15:40:03","date_gmt":"2026-07-22T15:40:03","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/effortless-software-download-recommendation\/"},"modified":"2026-07-22T14:56:24","modified_gmt":"2026-07-22T14:56:24","slug":"effortless-software-download-recommendation","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/effortless-software-download-recommendation\/","author":23148025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.7","stable_tag":"1.1.7","tested":"7.0.2","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"EffortLess Software Download Recommendation","header_author":"domclic","header_description":"Detects visitor OS\/architecture and recommends the correct software download with installation instructions, analytics, and QR codes.","assets_banners_color":"9e9e9e","last_updated":"2026-07-22 14:56:24","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":50,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.1.7":{"tag":"1.1.7","author":"domclic","date":"2026-07-22 14:56:24"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":3618858,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":3618858,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3618858,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3618858,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"elsdr\/download-widget":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"elsdr\/download-widget","version":"1.0.0","title":"Software Download Widget","category":"widgets","icon":"download","description":"Display the software download recommendation widget for your visitors.","textdomain":"effortless-software-download-recommendation","editorScript":"file:assets\/js\/block.js","attributes":{"software":{"type":"string","default":""}},"supports":{"html":false,"align":["wide","full"]}}},"tagged_versions":["1.1.7"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[232,568,272812,3466,6699],"plugin_category":[36],"plugin_contributors":[241557],"plugin_business_model":[],"class_list":["post-341687","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-download","plugin_tags-os-detection","plugin_tags-recommendation","plugin_tags-software","plugin_category-analytics","plugin_contributors-domclic","plugin_committers-domclic"],"banners":{"banner":"https:\/\/ps.w.org\/effortless-software-download-recommendation\/assets\/banner-772x250.jpg?rev=3618858","banner_2x":"https:\/\/ps.w.org\/effortless-software-download-recommendation\/assets\/banner-1544x500.jpg?rev=3618858","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/effortless-software-download-recommendation\/assets\/icon-128x128.jpg?rev=3618858","icon_2x":"https:\/\/ps.w.org\/effortless-software-download-recommendation\/assets\/icon-256x256.jpg?rev=3618858","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>EffortLess Software Download Recommendation detects the visitor's operating system and CPU architecture client-side, then recommends the correct software download package with step-by-step installation instructions.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Automatic OS and architecture detection (Windows, macOS, Linux, Android, iOS)<\/li>\n<li>Per-platform download packages managed from WP admin<\/li>\n<li>SHA-256 integrity hash display<\/li>\n<li>QR code generation for mobile downloads<\/li>\n<li>Linux distribution selector (deb, rpm, AppImage, Flatpak)<\/li>\n<li>Fallback manual OS selector for undetected platforms<\/li>\n<li>Download analytics dashboard with Chart.js charts<\/li>\n<li>CSV export of download statistics<\/li>\n<li>Admin notifications for new versions<\/li>\n<li><code>[elsdr_download]<\/code> shortcode<\/li>\n<li>Native Gutenberg block<\/li>\n<li>Light and dark mode widget<\/li>\n<li>i18n ready<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to <strong>Software Downloads \u2192 Versions<\/strong> to add your first software version.<\/li>\n<li>Upload your package file via the WordPress media library.<\/li>\n<li>Use <code>[elsdr_download]<\/code> on any page or add the <strong>Software Download Widget<\/strong> block.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Fix: Remove executable\/installer MIME types (exe, msi, msix, dmg, pkg, deb, rpm, appimage, flatpak, apk) from the media library upload_mimes filter entirely, resolving the Plugin Check \"insecure MIME types\" flag. Use the existing External URL option on a version to link to installers hosted elsewhere. Generic archive types (tar, gz, bz2, xz) remain uploadable.<\/li>\n<li>Enhancement: Add a description note on the Add\/Edit Version form explaining the local-upload restriction.<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Fix: Guard is_plugin_active_for_network() call with a require of wp-admin\/includes\/plugin.php so new-site table creation doesn't fatal when wp_initialize_site fires outside wp-admin (e.g. REST\/WP-CLI site creation).<\/li>\n<li>Fix: uninstall.php now also deletes the elsdr_db_version option and the network-wide elsdr_global_mode \/ elsdr_global_source_site options.<\/li>\n<li>Fix: Bump \"Requires at least\" to 6.3 to match block.json's apiVersion 3 requirement (was previously understated at 5.8\/6.2).<\/li>\n<li>Fix: Align license header (\"GPLv2 or later\") between the plugin file and readme.txt.<\/li>\n<li>Hardening: Replace raw string concatenation into innerHTML with textContent\/DOM methods in admin-analytics.js and widget.js for defense-in-depth against stored XSS.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Fix: Corrected admin page hook names so admin.css, Chart.js, and the analytics script actually load on the Analytics and Settings screens (previous hook check never matched).<\/li>\n<li>Fix: Removed Plugin URI and Author URI headers (pointed to the author's own promotional site).<\/li>\n<li>Fix: Parameterize dynamic table names with <code>%i<\/code> instead of <code>esc_sql()<\/code> + string interpolation. Bumps \"Requires at least\" to 6.2 (required for <code>%i<\/code> support).<\/li>\n<li>Fix: Stopped tracking AI-assistant planning docs (docs\/superpowers\/) in git; added to .gitignore.<\/li>\n<li>Enhancement: Override core's asymmetric <code>.wrap<\/code> margin on all admin pages for consistent card\/box alignment.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Fix: Move inline <code>&lt;script&gt;<\/code> blocks in the version-edit and network-settings admin pages to properly enqueued JS files.<\/li>\n<li>Fix: Restrict executable\/installer MIME type uploads (exe, msi, msix, dmg, pkg, appimage, apk, etc.) to administrators.<\/li>\n<li>Update: Bundled Chart.js from 4.4.0 to 4.5.1.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Fix: Rename Effortless_Donate_Notice class to ELSDR_Donate_Notice to satisfy plugin prefix naming conventions (WordPress.NamingConventions.PrefixAllGlobals).<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Update: Confirmed compatibility with WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix text domain to match plugin slug (effortless-software-download-recommendation).<\/li>\n<li>Remove deprecated load_plugin_textdomain() call (auto-loaded since WP 4.6).<\/li>\n<li>Replace external Font Awesome CDN with bundled local SVG icons.<\/li>\n<li>Bump block.json apiVersion to 3 for WordPress 7.0 iframe editor compatibility.<\/li>\n<li>Update \"Tested up to\" to WordPress 7.0.<\/li>\n<li>Prefix global variables in uninstall.php to meet naming conventions.<\/li>\n<li>Escape DB table names with esc_sql() to satisfy Plugin Checker security rules.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Replace custom SVG icon files with Font Awesome 6 Free brand icons (Apple, Windows, Linux, Android) for crisp rendering at all sizes.<\/li>\n<li>OS icons now use the FA web font loaded via jsDelivr CDN with proper brand colors.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Complete i18n: all strings translated into French (fr_FR), Spanish (es_ES), and Taiwan Mandarin (zh_TW).<\/li>\n<li>Regenerated .pot from source; synced and compiled all .po\/.mo files.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Global mode: add \"Source Site\" dropdown to choose which site all subsites read from (defaults to main site).<\/li>\n<li>Source site selector appears only when Global mode is selected; hidden in Per Site mode.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fix macOS icon: adjusted SVG viewBox to trim empty top space so the leaf\/stem renders correctly at small sizes.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Network settings: replaced global mode checkbox with explicit \"Per Site\" \/ \"Global\" radio buttons for clarity.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Multisite global mode: all subsites share versions and analytics from the main site.<\/li>\n<li>Network admin settings page (Settings &gt; Software Downloads) to toggle global mode.<\/li>\n<li>Subsite admin shows a notice with a link to the main site when global mode is active.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Allow software distribution MIME types in media library (exe, dmg, pkg, deb, rpm, AppImage, Flatpak, apk, tar\u2026).<\/li>\n<li>Add external URL option as alternative to local media library file.<\/li>\n<li>Auto-upgrade DB on plugins_loaded to add external_url column to existing installs.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Added dismissible donate notice on plugin admin pages.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>QR codes now delegate to effortless-qr-code-generator plugin when active; bundled qrcode.js removed.<\/li>\n<li>QR option is hidden when effortless-qr-code-generator is not installed.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added multisite support (network activation, new site auto-setup).<\/li>\n<li>Added translations: French (fr_FR), Spanish (es_ES), Taiwan Mandarin (zh_TW).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Automatically detects the visitor&#039;s OS and architecture, then recommends the correct software download package.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/341687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=341687"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/domclic"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=341687"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=341687"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=341687"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=341687"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=341687"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=341687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}