WordPress Multisite Suggestions

At work I’m currently trying to migrate away from our CMS and move us to WordPress Multisite. To me it seems like there are a few different ways to use WordPress Multisite, and I’m starting to think that should be a question when installing it. Some of the uses could be:

  1. A network of blogs owned by different users
  2. A large CMS with each separate site in the network being used to separate user permissions for editing (how I’m setting up our work install)
  3. CMS setup with each separate site as a different language (en.mysite.com, fr.mysite.com)

Based on the option you choose, it would be nice to customize WordPress for your needs. For example, say you select option 2 for your site (as I have for work). The entire site’s pages are spread out across multiple sites in the network. This is a pain in the neck when it comes to managing a custom menu using WordPress’s built-in menu system. I can only see the pages for the current site I’m on, not all the pages in the entire network.

Site Structure pluginAlso, in WordPress Multisite, there is no idea of subsites; they are all at the top level in the navigation. For my site, I’d like to “nest” some sites underneath others. Currently there was no way to do this, so I created a plugin called Site Structure to manage the hierarchy of sites (this is only for WordPress Multisite) across the network. You click and drag the site to it’s proper location in the hierarchy and save. Just a note, I haven’t released this plugin because I wasn’t sure anyone else had a need for it. If someone does, please post a comment and we’ll talk.

Left NavigationOn the front-end, I had to do a few extra queries to get it to work, but our left navigation functions just as it currently does on our site (it shows 3 levels of navigation). Site Structure (my plugin) stores all of the sites in an array that’s easily accessible from your theme files; this way you can query it however you need to from the front-end of your site. The only thing I haven’t quite figured out is how to layer pages from these sites in the mix. Currently, they just fall to the bottom of the list below the subsites. For example, if Academics had a page called Academic Affairs, that page would fall below School of Health Professions in the menu. I have not made it smart enough to have the subsites fall under pages in the navigation. Maybe in the future.

WordPress 3.0 and Menu Dropdown Box

I’ve started to play around with WordPress 3.0 Beta 2 and the new menu system it has. While playing around with it, I thought it might be nice to include a dropdown box of menu choices on a settings page for a theme. So I made a function similar to that of the dropdown box for categories (wp_dropdown_categories). I called this one wp_dropdown_nav_menus.

function wp_dropdown_nav_menus($args = ''){
	$defaults = array(
		'echo' => 1,
		'id' => '',
		'orderby' => 'name',
		'order' => 'ASC',
		'hide_empty' => 1,
		'selected' => 0,
		'class' => 'postform',
		'tab_index' => 0,
		'show_option_all' => '',
		'show_option_none' => '',
	);

	$r = wp_parse_args( $args, $defaults );
	extract( $r );

	$tab_index_attribute = '';
	if ( (int) $tab_index > 0 )
		$tab_index_attribute = " tabindex="$tab_index"";

	$terms = get_terms( 'nav_menu', array( 'hide_empty' => $r['hide_if_empty'], 'orderby' => $r['orderby'], 'order' => $r['order'] ));

	if(! empty($terms)){
		$output = "";
	}

	if ($echo){
		echo $output;
	}

	return $output;
}

If you want to use this in your code, please change the prefix of the function from wp_ to something more useful for your purpose. Just in case WordPress comes out with a function similar to this one.