Using WordPress ‘customize_load_themes’ PHP filter

The customize_load_themes WordPress PHP filter allows you to modify theme data that’s loaded in the customizer. You can load theme data from an external source or modify data loaded from wp_prepare_themes_for_js() or WordPress.org via themes_api().

Usage

add_filter('customize_load_themes', 'my_customize_load_themes', 10, 3);
function my_customize_load_themes($themes, $args, $manager) {
    // your custom code here
    return $themes;
}

Parameters

  • $themes (array|stdClass): Nested array or object of theme data.
  • $args (array): List of arguments, such as page, search term, and tags to query for.
  • $manager (WP_Customize_Manager): Instance of the Customize manager.

More information

See WordPress Developer Resources: customize_load_themes

Examples

Add a custom theme to the theme list

Add a custom theme from an external source to the theme list in the customizer.

add_filter('customize_load_themes', 'add_custom_theme', 10, 3);
function add_custom_theme($themes, $args, $manager) {
    $custom_theme = array(
        'name' => 'My Custom Theme',
        'screenshot' => 'https://example.com/my-custom-theme/screenshot.jpg'
        // add more theme properties here
    );
    array_push($themes, $custom_theme);
    return $themes;
}

Remove themes with a specific tag

Remove themes from the customizer that have a specific tag.

add_filter('customize_load_themes', 'remove_themes_by_tag', 10, 3);
function remove_themes_by_tag($themes, $args, $manager) {
    $filtered_themes = array();
    foreach ($themes as $theme) {
        if (!in_array('specific-tag', $theme['tags'])) {
            $filtered_themes[] = $theme;
        }
    }
    return $filtered_themes;
}

Modify the theme data

Change the theme name for all themes in the customizer.

add_filter('customize_load_themes', 'modify_theme_names', 10, 3);
function modify_theme_names($themes, $args, $manager) {
    foreach ($themes as &$theme) {
        $theme['name'] = 'New Name: ' . $theme['name'];
    }
    return $themes;
}

Sort themes by name

Sort themes in the customizer by their name.

add_filter('customize_load_themes', 'sort_themes_by_name', 10, 3);
function sort_themes_by_name($themes, $args, $manager) {
    usort($themes, function ($a, $b) {
        return strcmp($a['name'], $b['name']);
    });
    return $themes;
}

Filter themes by a specific author

Display only themes created by a specific author in the customizer.

add_filter('customize_load_themes', 'filter_themes_by_author', 10, 3);
function filter_themes_by_author($themes, $args, $manager) {
    $filtered_themes = array();
    foreach ($themes as $theme) {
        if ($theme['author'] == 'John Doe') {
            $filtered_themes[] = $theme;
        }
    }
    return $filtered_themes;
}