特定博客的多站点-子文件夹

时间:2011-04-19 作者:anu

将多个博客整合到一个多站点实例中—我们有两组博客—活动和存档。

添加的最佳方式是什么/archive/ 到已存档博客的URL?

例如:

可以通过访问活动博客www.domain.com/blognamewww.domain.com/archived/blogname我已经查看了几个域映射插件(包括WPMU开发),但我认为它们并不能满足我的需要。

1 个回复
最合适的回答,由SO网友:WhIteSidE 整理而成

为了像这样对你的博客进行分区,你需要编写一个自定义插件,类似于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文件中处理。

  • 结束

    相关推荐

    导入到WordPress MultiSite时禁用HTML过滤

    我正在迁移到WordPress多站点实例的许多站点都在帖子中嵌入了视频和iFrame。我宁愿禁用WordPress功能,在导入时去掉嵌入的内容,而不是将每篇文章转换为犹太教式的视频嵌入方式。编辑帖子时禁用剥离是as simple as disabling the kses filter. 不幸的是,我不知道导入帖子需要禁用什么。目前我怀疑wp\\u insert\\u post()方法,但没有缩小过滤器的范围。有什么想法吗?Update: 这是特定于WordPress Multisite的。导入到单个Wo