Multisite - sub subcarpetas para ciertos blogs

4

Consolidando varios blogs en una sola instancia multisitio: tenemos 2 conjuntos de blogs: activos y archivados.

¿Cuál es la mejor manera de agregar /archive/ a las URL de los blogs archivados?

Entonces, como ejemplo:

  • Se podría acceder a un blog activo a través de www.domain.com/blogname
  • Se podría acceder a un blog archivado a través de www.domain.com/archived/blogname

He echado un vistazo a un par de complementos de mapeo de dominios (incluido el de WPMU Dev), pero no creo que hagan lo que necesito.

    
pregunta anu 19.04.2011 - 17:21

1 respuesta

5

Para realizar la partición de sus blogs de esta manera, deberá escribir un complemento personalizado similar al Complemento de asignación de dominio de WordPress MU . Así es como debe funcionar tu complemento.

  1. Crea un archivo sunrise.php para tu complemento, y apropiadamente define('SUNRISE',true); en tu archivo wp-config.php.
  2. Cree una tabla que asigne las tuplas {blog_slug, blog_id, is_archived}

En sunrise.php ejecuta la siguiente 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
}

Finalmente, rellene los campos de su tabla para que sepa qué blogs están "archivados". En producción probablemente querrá agregar algunos controles de seguridad de matriz, así como verificar que si "blog_a" está archivado, luego visite sudominio.com/blog_a redirige a sudominio.com/archived/blog_a. Todas estas cosas se pueden manejar en el archivo de sunrise.

    
respondido por el WhIteSidE 27.04.2011 - 04:43

Lea otras preguntas en las etiquetas