Multisite - sub-subpastas para determinados blogs

4

A consolidação de vários blogs em uma única instância multisite - temos dois conjuntos de blogs - ativos e arquivados.

Qual é a melhor maneira de adicionar /archive/ aos URLs dos blogs arquivados?

Então, como exemplo:

  • Um blog ativo seria acessado via www.domain.com/blogname
  • Um blog arquivado seria acessado por meio de www.domain.com/archived/blogname

Eu dei uma olhada em alguns plugins de mapeamento de domínio (incluindo o WPMU Dev), mas eu não acho que eles façam o que eu preciso.

    
por anu 19.04.2011 / 17:21

1 resposta

5

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.

  1. Crie um arquivo sunrise.php para seu plug-in e corretamente define('SUNRISE',true); em seu arquivo wp-config.php.
  2. 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.

    
por WhIteSidE 27.04.2011 / 04:43