anu
  • 0
Гуру

Многосайтовость — подпапки для определенных блогов

  • 0

Объединение нескольких блогов в один многосайтовый экземпляр — у нас есть 2 набора блогов — активные и заархивированные.

Как лучше всего добавить /archive/ URL-адреса заархивированных блогов?

Итак, в качестве примера:

  • Доступ к активному блогу будет осуществляться черезwww.domain.com/blogname
  • Доступ к архивному блогу будет осуществляться черезwww.domain.com/archived/blogname

Я взглянул на пару плагинов для сопоставления доменов (включая WPMU Dev), но я не думаю, что они делают то, что мне нужно.

Share
  1. Чтобы разделить ваши блоги таким образом, вам нужно будет написать собственный плагин, похожий на плагин WordPress MU Domain Mapping. Вот как должен работать ваш плагин.

    1. Создайте sunrise.php файл для вашего плагина и правильно define('SUNRISE',true); в файле wp-config.php.
    2. Создайте таблицу, которая отображает кортежи {blog_slug, blog_id, is_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_a» заархивирован, то посещение yourdomain.com/blog_a перенаправляет на yourdomain.com/archived/blog_a. Все эти вещи могут быть обработаны в файле восхода солнца.

    • 0

Оставить ответ

You must login to add an answer.