{"id":278880,"date":"2026-04-23T20:20:06","date_gmt":"2026-04-23T20:20:06","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/enable-auto-updates-minorpatch\/"},"modified":"2026-05-10T20:26:50","modified_gmt":"2026-05-10T20:26:50","slug":"kanenas-minor-patch-auto-updates","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/kanenas-minor-patch-auto-updates\/","author":13915493,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"6.9.4","requires":"5.5","requires_php":"7.4","requires_plugins":null,"header_name":"kanenas \u2014 Minor\/Patch Auto-Updates","header_author":"kanenas (aka Nikolas Branis)","header_description":"Adds an \"Enable auto-updates minor\/patch\" option, allowing automatic updates only for minor and patch versions while preventing major version updates.","assets_banners_color":"757f97","last_updated":"2026-05-10 20:26:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/kanenas.net\/wordpress-plugins\/kanenas-minor-patch-auto-updates\/","header_author_uri":"https:\/\/kanenas.net\/","rating":0,"author_block_rating":0,"active_installs":30,"downloads":232,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"kanenas","date":"2026-04-23 21:04:01"},"1.0.2":{"tag":"1.0.2","author":"kanenas","date":"2026-05-09 08:01:51"},"1.0.3":{"tag":"1.0.3","author":"kanenas","date":"2026-05-10 20:26:50"}},"upgrade_notice":{"1.0.3":"<p>Syncs opted-in plugins\/themes with WordPress core auto-update options; clearer logs when no upgrade is pending.<\/p>","1.0.2":"<p>Safer premium updater compatibility: ambiguous versions now defer to existing updater decisions, with optional bypass and debug hooks.<\/p>","1.0.1":"<p>Renamed for directory guidelines; update translations if you ship custom <code>.mo<\/code> files. If you upgrade from an older folder name, deactivate the old copy, remove it, then install this layout and activate again.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-1024x1024.png":{"filename":"icon-1024x1024.png","revision":3514133,"resolution":"1024x1024","location":"assets","locale":"","width":1024,"height":1024},"icon-128x128.png":{"filename":"icon-128x128.png","revision":3514133,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3514133,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2","1.0.3"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The \"Enable auto-updates minor\/patch\" link appears below each plugin's auto-update setting","2":"Success notification when enabling minor\/patch auto-updates","3":"Theme details overlay showing the minor\/patch auto-update option"}},"plugin_section":[],"plugin_tags":[2549,9709,260956,23402,260957],"plugin_category":[],"plugin_contributors":[93739],"plugin_business_model":[],"class_list":["post-278880","plugin","type-plugin","status-publish","hentry","plugin_tags-auto-update","plugin_tags-automatic-updates","plugin_tags-minor","plugin_tags-patch","plugin_tags-semver","plugin_contributors-kanenas","plugin_committers-kanenas"],"banners":{"banner":"https:\/\/ps.w.org\/kanenas-minor-patch-auto-updates\/assets\/banner-772x250.jpg?rev=3514133","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kanenas-minor-patch-auto-updates\/assets\/icon-128x128.png?rev=3514133","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>kanenas \u2014 Minor\/Patch Auto-Updates<\/strong> gives you granular control over automatic updates. While WordPress allows you to enable or disable auto-updates entirely, this adds a third option: auto-update only minor and patch versions while keeping major versions at bay.<\/p>\n\n<h4>Why Use This?<\/h4>\n\n<p>Major version updates often introduce significant changes that may:<\/p>\n\n<ul>\n<li>Break compatibility with other extensions<\/li>\n<li>Introduce new features that require testing<\/li>\n<li>Change the behavior of existing functionality<\/li>\n<li>Require database migrations or manual intervention<\/li>\n<\/ul>\n\n<p>With this, you can:<\/p>\n\n<ul>\n<li><strong>Receive security patches automatically<\/strong> - Minor and patch versions typically contain security fixes<\/li>\n<li><strong>Get bug fixes without intervention<\/strong> - Patch versions are generally safe to apply automatically<\/li>\n<li><strong>Control major updates manually<\/strong> - Review major version changes before applying them<\/li>\n<li><strong>Maintain site stability<\/strong> - Reduce the risk of unexpected breaking changes<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<p>It uses semantic versioning (MAJOR.MINOR.PATCH) to determine update types:<\/p>\n\n<ul>\n<li><strong>Major update<\/strong> (e.g., 1.0.0 \u2192 2.0.0): Blocked from auto-update<\/li>\n<li><strong>Minor update<\/strong> (e.g., 1.0.0 \u2192 1.1.0): Allowed to auto-update<\/li>\n<li><strong>Patch update<\/strong> (e.g., 1.0.0 \u2192 1.0.1): Allowed to auto-update<\/li>\n<\/ul>\n\n<p>Internally, this plugin runs only on WordPress auto-update decision filters:<\/p>\n\n<ul>\n<li><code>auto_update_plugin<\/code><\/li>\n<li><code>auto_update_theme<\/code><\/li>\n<\/ul>\n\n<p>When you enable minor\/patch mode for a plugin or theme, it also adds that item to WordPress core's <code>auto_update_plugins<\/code> \/ <code>auto_update_themes<\/code> site options so the automatic updater treats it as opted-in the same way as the Plugins\/Themes screen toggle.<\/p>\n\n<p>It does not rewrite update API responses (<code>plugins_api<\/code>) and does not modify updater transients (<code>pre_set_site_transient_update_plugins<\/code>). Premium update discovery and license validation remain managed by each vendor updater.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Per-item control<\/strong> - Enable minor\/patch auto-updates for specific items<\/li>\n<li><strong>Easy toggle<\/strong> - Simple links in the admin pages<\/li>\n<li><strong>Non-intrusive<\/strong> - Works alongside WordPress's native auto-update system<\/li>\n<li><strong>Clean uninstall<\/strong> - Removes all data when uninstalled<\/li>\n<li><strong>Translation ready<\/strong> - Fully prepared for localization<\/li>\n<\/ul>\n\n<h4>Usage<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins<\/strong> \u2192 <strong>Installed Plugins<\/strong><\/li>\n<li>Look for the \"Enable auto-updates minor\/patch\" link below each plugin's auto-update setting<\/li>\n<li>Click to enable\/disable minor\/patch auto-updates for that plugin<\/li>\n<\/ol>\n\n<p>For themes:\n1. Go to <strong>Appearance<\/strong> \u2192 <strong>Themes<\/strong>\n2. Click on a theme to view its details\n3. Look for the \"Enable auto-updates minor\/patch\" option in the theme details overlay<\/p>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin does not collect, store, or transmit any personal data. It only stores plugin\/theme preferences in your WordPress database.<\/p>\n\n<!--section=installation-->\n<h4>From WordPress Admin<\/h4>\n\n<ol>\n<li>Go to <strong>Add New<\/strong> in your admin<\/li>\n<li>Search for \"kanenas \u2014 Minor\/Patch Auto-Updates\"<\/li>\n<li>Click <strong>Install Now<\/strong> and then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the ZIP file<\/li>\n<li>Go to <strong>Add New<\/strong> \u2192 <strong>Upload<\/strong><\/li>\n<li>Choose the ZIP file and click <strong>Install Now<\/strong><\/li>\n<li>Activate it<\/li>\n<\/ol>\n\n<h4>Via FTP<\/h4>\n\n<ol>\n<li>Download and unzip<\/li>\n<li>Upload the plugin folder (for example <code>kanenas-minor-patch-auto-updates<\/code>) to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate through the admin menu<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20premium%20extensions%3F\"><h3>Does this work with premium extensions?<\/h3><\/dt>\n<dd><p>Yes, for automatic-update decisions. This plugin can only allow\/block the final auto-update decision after an update has already been discovered by the vendor updater.<\/p>\n\n<p>If a premium update is not detected at all, the cause is usually in that vendor's update\/auth stack and not in this plugin.<\/p><\/dd>\n<dt id=\"what%20if%20an%20extension%20doesn%27t%20follow%20semantic%20versioning%3F\"><h3>What if an extension doesn't follow semantic versioning?<\/h3><\/dt>\n<dd><p>The plugin classifies versions as <code>minor_or_patch<\/code>, <code>major<\/code>, or <code>unknown<\/code>.<\/p>\n\n<p>If a version cannot be categorized safely, it now defers to WordPress's existing auto-update decision instead of forcing allow\/deny.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20alongside%20wordpress%27s%20native%20auto-updates%3F\"><h3>Can I use this alongside WordPress's native auto-updates?<\/h3><\/dt>\n<dd><p>Yes. If you enable both the native \"Enable auto-updates\" and \"Enable auto-updates minor\/patch\" options, the minor\/patch setting will take precedence and block major version updates.<\/p><\/dd>\n<dt id=\"are%20there%20compatibility%20filters%20for%20premium%20updater%20edge-cases%3F\"><h3>Are there compatibility filters for premium updater edge-cases?<\/h3><\/dt>\n<dd><p>Yes.<\/p>\n\n<ul>\n<li><code>eaump_bypass_plugin_update_gate<\/code> - bypass this plugin's gate for a specific plugin update object.<\/li>\n<li><code>eaump_bypass_theme_update_gate<\/code> - bypass this plugin's gate for a specific theme update object.<\/li>\n<li><code>eaump_debug_log_updates<\/code> - enable JSON decision logs (defaults to <code>WP_DEBUG<\/code>).<\/li>\n<\/ul>\n\n<p>If your premium updater has custom version formats or non-standard metadata, use a bypass filter to defer to core\/vendor logic for that item.<\/p><\/dd>\n<dt id=\"troubleshooting%20premium%20updater%20flows\"><h3>Troubleshooting premium updater flows<\/h3><\/dt>\n<dd><ol>\n<li>Confirm the premium updater detects an available update first.<\/li>\n<li>Check whether your item is opted into \"auto-updates minor\/patch\".<\/li>\n<li>Enable debug logging with <code>eaump_debug_log_updates<\/code> and inspect decision reason codes.<\/li>\n<li>If needed, add a targeted bypass via <code>eaump_bypass_plugin_update_gate<\/code> or <code>eaump_bypass_theme_update_gate<\/code>.<\/li>\n<\/ol><\/dd>\n<dt id=\"why%20do%20debug%20logs%20show%20the%20same%20current%20and%20new%20version%3F\"><h3>Why do debug logs show the same current and new version?<\/h3><\/dt>\n<dd><p>On the Plugins screen, WordPress may invoke <code>auto_update_plugin<\/code> for every row using metadata where the offered version equals the installed version (no pending upgrade). In that case you will see <code>reason: defer_same_version_no_pending_upgrade<\/code> \u2014 it does not mean an update failed; it means there was nothing to upgrade in that pass.<\/p><\/dd>\n<dt id=\"does%20disabling%20minor%2Fpatch%20remove%20wordpress%20auto-updates%20for%20that%20item%3F\"><h3>Does disabling minor\/patch remove WordPress auto-updates for that item?<\/h3><\/dt>\n<dd><p>Yes. Disabling minor\/patch removes that plugin\/theme from core <code>auto_update_plugins<\/code> \/ <code>auto_update_themes<\/code>, matching the enable action which opted it in.<\/p><\/dd>\n<dt id=\"will%20this%20work%20on%20multisite%3F\"><h3>Will this work on multisite?<\/h3><\/dt>\n<dd><p>Yes, it supports WordPress multisite installations.<\/p><\/dd>\n<dt id=\"how%20do%20i%20report%20a%20bug%20or%20request%20a%20feature%3F\"><h3>How do I report a bug or request a feature?<\/h3><\/dt>\n<dd><p>Please visit <a href=\"https:\/\/kanenas.net\/\">kanenas.net<\/a> or use the WordPress.org support forum.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Sync EAUMP-enabled plugins\/themes with core <code>auto_update_plugins<\/code> \/ <code>auto_update_themes<\/code> so background updates align with WordPress's opted-in list.<\/li>\n<li>When installed version equals the offered version (no pending upgrade), defer instead of logging a false \"allow\" decision.<\/li>\n<li>One-time migration merges existing EAUMP selections into core auto-update lists.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added conservative update classification (<code>minor_or_patch<\/code>, <code>major<\/code>, <code>unknown<\/code>) for safer handling of vendor-specific version formats.<\/li>\n<li>Changed ambiguous version behavior to defer to WordPress\/core decision instead of hard blocking.<\/li>\n<li>Added premium compatibility bypass filters: <code>eaump_bypass_plugin_update_gate<\/code>, <code>eaump_bypass_theme_update_gate<\/code>.<\/li>\n<li>Added optional structured debug logging via <code>eaump_debug_log_updates<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed plugin for WordPress.org distinctiveness; text domain is now <code>kanenas-minor-patch-auto-updates<\/code>.<\/li>\n<li>Plugin directory and bootstrap file are <code>kanenas-minor-patch-auto-updates\/kanenas-minor-patch-auto-updates.php<\/code> (matches SVN slug).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Adds an &quot;Enable auto-updates minor\/patch&quot; option, allowing automatic updates only for minor and patch versions while preventing major updates.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/278880","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=278880"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kanenas"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=278880"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=278880"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=278880"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=278880"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=278880"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=278880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}