Using WordPress ‘plugin_auto_update_setting_html’ PHP filter

Highlight premium plugins in the auto-update column

Add a label “Premium Plugin” to the auto-update column for premium plugins based on an array of premium plugin files.

add_filter('plugin_auto_update_setting_html', 'highlight_premium_plugins', 10, 3);
function highlight_premium_plugins($html, $plugin_file, $plugin_data) {
    $premium_plugins = array(
        'premium-plugin-1/premium-plugin-1.php',
        'premium-plugin-2/premium-plugin-2.php',
    );

    if (in_array($plugin_file, $premium_plugins)) {
        $html .= '<div class="premium-plugin-label">Premium Plugin</div>';
    }

    return $html;
}

Change auto-update column content for inactive plugins

Replace the auto-update column content with a custom message for inactive plugins.

add_filter('plugin_auto_update_setting_html', 'change_content_for_inactive_plugins', 10, 3);
function change_content_for_inactive_plugins($html, $plugin_file, $plugin_data) {
    if (!is_plugin_active($plugin_file)) {
        $html = '<span class="inactive-plugin">This plugin is inactive. Activate the plugin to manage auto-updates.</span>';
    }

    return $html;
}

Add custom icons to the enable and disable auto-update links.

add_filter('plugin_auto_update_setting_html', 'add_custom_icons_to_auto_update_links', 10, 3);
function add_custom_icons_to_auto_update_links($html, $plugin_file, $plugin_data) {
    $enable_icon = '<i class="custom-icon-enable"></i>';
    $disable_icon = '<i class="custom-icon-disable"></i>';
    $html = str_replace('Enable auto-updates', $enable_icon . ' Enable auto-updates', $html);
    $html = str_replace('Disable auto-updates', $disable_icon . ' Disable auto-updates', $html);

    return $html;
}

Add a custom action to the auto-update column

Add a custom action link to the auto-update column for each plugin.

add_filter('plugin_auto_update_setting_html', 'add_custom_action_to_auto_update_column', 10, 3);
function add_custom_action_to_auto_update_column($html, $plugin_file, $plugin_data) {
    $custom_action = '<a href="#" class="custom-action">Custom Action</a>';
    $html .= $custom_action;
    return $html;
}

Remove auto-update links for users with a specific user role, such as “editor”.

add_filter('plugin_auto_update_setting_html', 'remove_auto_update_links_for_specific_user_role', 10, 3);
function remove_auto_update_links_for_specific_user_role($html, $plugin_file, $plugin_data) {
    $current_user = wp_get_current_user();

    if (in_array('editor', $current_user->roles)) {
        $html = preg_replace('/<a href=".*?" class="toggle-auto-update.*?<\/a>/', '', $html);
    }

    return $html;
}