<?php /** * Auto-Update Enabler * * Decisions, not options. Inspired by Trac ticket #58389 by * Jos Velasco and an offhanded comment on the fedi by Andy * Fragen. * * @package Auto-Update Enabler * @author Jason Cosper <boogah@gmail.com> * @license https://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ * @link https://gist.github.com/boogah/8209b99cddcb5bb4024382c011745da9 * * @wordpress-plugin * Plugin Name: Auto-Update Enabler * Version: 1.0 * Requires at least: 6.0 * Requires PHP: 7.4 * Author: Jason Cosper * Author URI: https://jasoncosper.com/ * License: GPL-2.0+ * License URI: https://www.gnu.org/licenses/gpl-2.0.txt * Description: Enables auto-updates for plugins by default when plugins are installed or activated. * Gist Plugin URI: https://gist.github.com/boogah/8209b99cddcb5bb4024382c011745da9 */ // If this file is called directly, abort. if (! defined('WPINC') ) { die; } // Add an action hook during the plugin installation process. add_action('upgrader_process_complete', 'auto_update_enabler_install_plugin', 10, 2); /** * upgrader_process_complete hook callback function. * * @param WP_Upgrader $upgrader WP_Upgrader instance. Might be a Theme_Upgrader, Plugin_Upgrader, Core_Upgrade, or Language_Pack_Upgrader instance. * @param array $hook_extra Array of bulk item update data. */ function auto_update_enabler_install_plugin($upgrader, $hook_extra) { if ($hook_extra['action'] == 'install' && $hook_extra['type'] == 'plugin') { $plugin_path = $upgrader->plugin_info(); // Check if the auto_update_plugins option exists. if (!get_option('auto_update_plugins')) { add_option('auto_update_plugins', array()); } // Add the plugin to the auto-update list. $current = get_option('auto_update_plugins', array()); if (!in_array($plugin_path, $current, true)) { $current[] = $plugin_path; // Update the auto-update plugins option. update_option('auto_update_plugins', $current); } } } // Add an action hook during the plugin activation process. add_action( 'activate_plugin', 'auto_update_enabler_activate_plugin', 10, 2 ); /** * activate_plugin hook callback function. * * @param string $plugin The plugin file. * @param bool $network Whether the plugin is being activated network-wide. */ function auto_update_enabler_activate_plugin( $plugin, $network ) { // Check if the plugin is activated in the Plugins > Add New section. if ( ! $network && is_admin() && isset( $_GET['plugin'] ) && isset( $_GET['_wpnonce'] ) ) { // Verify the security nonce. if ( ! wp_verify_nonce( $_GET['_wpnonce'], 'activate-plugin_' . $_GET['plugin'] ) ) { return; } // Check if the $_GET variables are set. if ( ! isset( $_GET['plugin'] ) || ! isset( $_GET['_wpnonce'] ) ) { return; } // Check if the auto_update_plugins option exists. if ( ! get_option( 'auto_update_plugins' ) ) { add_option( 'auto_update_plugins', array() ); } // Add the plugin to the auto-update list. $current = get_option( 'auto_update_plugins', array() ); $current[] = $plugin; // Update the auto-update plugins option. update_option( 'auto_update_plugins', $current ); } } /** * Enable auto-updates for a plugin. * * @param string $plugin The plugin file. */ function auto_update_enabler_plugin( $plugin ) { // Do nothing if the auto_update_plugins option does not exist. if ( ! get_option( 'auto_update_plugins' ) ) { return; } // Check if the plugin is already in the auto-update list. $current = get_option( 'auto_update_plugins', array() ); if ( in_array( $plugin, $current, true ) ) { return; } // Add the plugin to the auto-update list. $current[] = $plugin; // Update the auto-update plugins option. update_option( 'auto_update_plugins', $current ); }