为了像这样对你的博客进行分区,你需要编写一个自定义插件,类似于WordPress MU Domain Mapping 插件。以下是您的插件需要如何工作。
创建sunrise.php
插件的文件,并正确define(\'SUNRISE\',true);
在wp配置中。php文件
创建一个映射元组{blog\\u slug,blog\\u id,is\\u archived}的表sunrise.php
执行以下逻辑:$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
}
最后,填充表中的字段,以便它知道哪些博客被“归档”。在生产中,您可能需要添加一些阵列安全检查,以及检查“blog\\u a”是否已存档,然后访问您的域。com/blog\\u a重定向到您的域。com/archived/blog\\u a。所有这些都可以在sunrise文件中处理。