Para fazer a partição de seus blogs como este, você precisará escrever um plugin personalizado semelhante ao WordPress MU Domain Mapping plugin. Veja como o seu plug-in precisa funcionar.
- Crie um arquivo
sunrise.php
para seu plug-in e corretamentedefine('SUNRISE',true);
em seu arquivo wp-config.php. - Crie uma tabela que mapeie as tuplas {blog_slug, blog_id, is_archived}
Em sunrise.php
, execute a seguinte lógica:
$access_url = $_SERVER[ 'REQUEST_URI' ];
$on_archive = false;
$slug = "";
$parts = explode('/',$access_url);
for($i = 0; $i < count($parts); ++$i) {
if(strpos($parts[i],"yourdomain.com") !== false) {
if($parts[i + 1] == "archived") {
$on_archive = true;
$slug = $parts[i+2]; // TODO: Index checking
} else
$slug = $parts[i + 1];
break;
}
}
$blog_id = $wpdb->get_var("SELECT blog_id FROM YOURTABLE WHERE blog_name=$slug ...");
if($blog_id && $on_archive) {
$current_blog = $wpdb->get_row("SELECT * FROM {$wpdb->blogs} WHERE blog_id = '$blog_id' LIMIT 1");
$current_blog->path = '/archived';
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE domain='{$current_site->domain}' AND path='{$current_site->path}'" );
} else {
// Things went wrong, redirect to the home page, or something
}
Por fim, preencha os campos da sua tabela para saber quais blogs são "arquivados". Na produção, você provavelmente deseja adicionar algumas verificações de segurança de matriz, além de verificar se "blog_a" está arquivado e, em seguida, visitar yourdomain.com/blog_a redireciona para yourdomain.com/archived/blog_a. Todas essas coisas podem ser manipuladas no arquivo do nascer do sol.