[wp-hackers] Filtering Themes visible for a particular network

Andrew Nacin wp at andrewnacin.com
Tue Jul 20 22:17:20 UTC 2010

On Tue, Jul 20, 2010 at 6:10 PM, Andrew Nacin <wp at andrewnacin.com> wrote:

> On Tue, Jul 20, 2010 at 5:59 PM, Shelby, Harper <
> harper.shelby at parivedasolutions.com> wrote:
>> I've been asked to implement theme filtering for a multi-network
>> installation, so that network admins only see those themes which "belong" to
>> them. In the existing installation (on MU 2.9.2), this was done by altering
>> wpmu-themes to check for a Tags value in the theme's CSS file and filtering
>> based on that. I'm trying to move this implementation into a plugin to
>> reduce changes to the core code. Digging into the code, I don't see any
>> action or filter hooks being called in ms-themes.php, so I suspect my best
>> course of action is to move themes into network-specific subdirectories of
>> wp-content/themes, then alter the include path in an admin_init hook to
>> bring in the proper theme directory. Is there a better way to implement
>> this, or are there any potential risks that I haven't seen in this course of
>> action?
> You can indeed register theme directories in a plugin. In fact that seems
> like a very sane way of doing this (as long as you don't expect a theme to
> be used across networks).

What I meant was, no need for admin_init modifications or anything of the
sort. Check out register_theme_directory(). So you could simply have a
plugin that calls register_theme_directory( WP_CONTENT_DIR .
'/network-themes/' . $current_site->site_id ); and you'd be good to go.

Also, I'd upgrade to 3.0 when you can (perhaps with 3.0.1), there's a decent
number of MU improvements and bug fixes that went into that release.

More information about the wp-hackers mailing list