Multiply for WordPress 1.5.x

Multiply is a plugin for WordPress which enables multiple blogs from within the one administration interface. It is most suitable for a single author with a small number of blogs. Small groups will be fine, but it will not scale well to hundreds of blogs. Do not even think the words "blog farm".

This page describes the version for WordPress 1.5.x; it is unsupported and no longer under development. It will not work with any other version of WordPress.

Please note that there are good reasons not to use it, and I would urge you to consider them carefully. WordPress μ is the official multi-user version of WordPress.

Download

The final version of this plugin is 1.2.3. If you know what you're getting into, go ahead and download it now.

Changelog

Caveats

Install

I don't think there'll be any big problems, but you might want to back up your data first.

It should install as soon as the plugin is activated. There are no other files required.

Make

Head over to the "Presses" submenu under "Manage". The blog management page [screenshot] is restricted to user level ten or higher, i.e. the administrator only. Enter a name for the new press and a default access level for it. An access level of ten, for example, means that no-one but the administrator can access it unless specifically authorized.

Options

Use the dropdown in the top right-hand corner of the screen [screenshot] to select a press. For each one you create, go through the options menus and set everything to your liking.

The "Blog Address (URI)" should be set differently for each press. If your default press is at http://example.com/me/, try http://example.com/i-love-my-cat/ or http://example.com/me/loves-cats/.

You can use different themes and plugins with each press.

Files and folders

You'll need a new index.php at each selected Blog Address (URI). Information you'll need to know:

The file should contain something like this:

<?php 
$mb_press_id = 1;
define('WP_USE_THEMES', true);
require('../wp-blog-header.php');
?>

... where $mb_press_id is whatever the press ID is, and you're requiring the relative path to wp-blog-header.php.

For example, if WordPress is installed at http://example.com/wp/ and you want a new press (ID, say, #4) at http://example.com/cats-are-super/, your http://example.com/cats-are-super/index.php file should contain this:

<?php 
$mb_press_id = 4;
define('WP_USE_THEMES', true);
require('../wp/wp-blog-header.php');
?>

If you're using .htaccess/mod_rewrite, you should generate a set of rules for each press, and (if the file isn't saved automatically) it should go in the same directory as the index.php you just made.

Users

After a press is added, you can add users to it. [screenshot] All users above that press's default access level can use it as though it were the main blog, or you can give certain users higher-level access to it. You can add a press for a friend, for example, and give them level nine access to it while leaving them as level zero elsewhere.

Pingbacks

Unfortunately, getting pingbacks to work requires editing a few files.

First of all, you have to make two small changes to wp-blog-header.php. Search for "X-Pingback", and replace "get_bloginfo('pingback_url')" with "mb_get_pingback_url()".

If you're using .htaccess/mod_rewrite, you're done. If you're not, or you're not sure, there's one more step.

For each press you add, you need to add a file called xmlrpc-{$press_id}.php to the WordPress install directory, where "{$press_id}" is the ID of the press. Multiply will try and create this file automatically, but on many hosts you will need to do it yourself. The contents are similar to those of the index.php you already made. For example, xmlrpc-1.php would contain this:

<?php 
$mb_press_id = 1;
require('./xmlrpc.php');
?>

This should be placed in the WordPress install directory -- the one containing wp-blog-header.php, wp-login.php and the rest.

And you're done.

Plugins

Out-of-the-box, you can have plugins on the alternate presses that aren't on the main one, but not the other way around. If you have plugins active on the main site that you don't want on your new presses, you need to make a very small change to wp-settings.php.

Search for the line that says:

if ('' != $plugin && file_exists(ABSPATH . 'wp-content/plugins/' . $plugin))

and change it to this:

if (!isset($mb_id) && '' != $plugin && file_exists(ABSPATH . 'wp-content/plugins/' . $plugin))

That's it.

XML-RPC posting

If you've used the pingback fix above, you can post to your blog using a rich client like W.Bloggar or Ecto by pointing it at (e.g.) xmlrpc-3.php.