Is there an easy way to separate themes on network?

You’d have to make you site categories slug match your theme categories folder names.

Here’s how to filter themes: Hide a theme on list of themes in wp-admin without editing core files

And then, supposing a site has the category a-p and the themes are stored in themes/a-p/, this will filter them out:

add_filter( 'all_themes', 'remove_themes_ms_wpse_117537' );

function remove_themes_ms_wpse_117537( $themes )
{
    if( 'site-themes-network' != get_current_screen()->id )
        return $themes;

    $site_cat = get_blog_option( absint( $_GET['id'] ), 'site_category' );
    if( $site_cat )
    {
        # Unset themes not in the folder /themes/$site_cat/
        foreach( $themes as $key => $theme )
        {
            if( strpos( $key, "$site_cat/" ) === false )
                unset($themes[$key]);
        }
    }
    return $themes;
}

Leave a Comment