Using WordPress ‘install_theme_overwrite_comparison’ PHP filter

The install_theme_overwrite_comparison WordPress PHP filter allows you to modify the comparison table output when overwriting an existing theme during a theme upload.

Usage

add_filter('install_theme_overwrite_comparison', 'your_custom_function', 10, 3);

function your_custom_function($table, $current_theme_data, $new_theme_data) {
    // your custom code here
    return $table;
}

Parameters

  • $table (string) – The output table with Name, Version, Author, RequiresWP, and RequiresPHP information.
  • $current_theme_data (WP_Theme) – Active theme data.
  • $new_theme_data (array) – Array with uploaded theme data.

More information

See WordPress Developer Resources: install_theme_overwrite_comparison

Examples

Add custom column to the table

Add a custom column “Description” to the comparison table.

add_filter('install_theme_overwrite_comparison', 'add_description_column', 10, 3);

function add_description_column($table, $current_theme_data, $new_theme_data) {
    // Add the custom header column
    $table['header']['description'] = 'Description';

    // Add the current theme description
    $table['current_theme']['description'] = $current_theme_data->get('Description');

    // Add the new theme description
    $table['new_theme']['description'] = $new_theme_data['Description'];

    return $table;
}

Highlight major version updates

Highlight the version column in red if the new theme version is a major update.

add_filter('install_theme_overwrite_comparison', 'highlight_major_version_update', 10, 3);

function highlight_major_version_update($table, $current_theme_data, $new_theme_data) {
    $current_version = $current_theme_data->get('Version');
    $new_version = $new_theme_data['Version'];

    // Compare major versions
    if (version_compare($current_version, $new_version, '<')) {
        $table['new_theme']['version'] = '<span style="color: red;">' . $new_version . '</span>';
    }

    return $table;
}

Modify Author column

Append the author’s email to the author column.

add_filter('install_theme_overwrite_comparison', 'modify_author_column', 10, 3);

function modify_author_column($table, $current_theme_data, $new_theme_data) {
    $current_author = $current_theme_data->get('Author');
    $new_author = $new_theme_data['Author'];

    // Append the author's email
    $table['current_theme']['author'] .= ' (' . $current_theme_data->get('AuthorURI') . ')';
    $table['new_theme']['author'] .= ' (' . $new_theme_data['AuthorURI'] . ')';

    return $table;
}

Remove RequiresPHP column

Remove the RequiresPHP column from the comparison table.

add_filter('install_theme_overwrite_comparison', 'remove_requires_php_column', 10, 3);

function remove_requires_php_column($table, $current_theme_data, $new_theme_data) {
    // Remove the RequiresPHP column from the header, current_theme, and new_theme
    unset($table['header']['requires_php'], $table['current_theme']['requires_php'], $table['new_theme']['requires_php']);

    return $table;
}

Add custom message

Add a custom message below the comparison table to display a warning about creating a backup before updating the theme.

add_filter('install_theme_overwrite_comparison', 'add_custom_message', 10, 3);
function add_custom_message($table, $current_theme_data, $new_theme_data) {
    // Create a custom message
    $message = '<p style="color: red; font-weight: bold;">Warning: Please create a backup of your current theme before updating.</p>';

    // Add the message to the table
    $table['footer']['message'] = $message;

    return $table;
}