Multisite – Unterordner für bestimmte Blogs

Mehrere Blogs in einer einzigen Multisite-Instanz konsolidieren – wir haben 2 Sätze von Blogs – aktiv und archiviert.

Wie kann ich die URLs der archivierten Blogs am besten hinzufügen /archive/ archivieren?

Also, als ein Beispiel:

  • Ein aktiver Blog wird über www.domain.com/blogname
  • Ein archivierter Blog wird über www.domain.com/archived/blogname

Ich habe mir ein paar Domain-Mapping-Plugins angeschaut (einschließlich der WPMU Dev), aber ich glaube nicht, dass sie tun, was ich brauche.

Solutions Collecting From Web of "Multisite – Unterordner für bestimmte Blogs"

Um Ihre Blogs so zu partitionieren, müssen Sie ein benutzerdefiniertes Plugin schreiben, das dem WordPress MU Domain Mapping Plugin ähnlich ist. Hier ist, wie Ihr Plugin funktionieren muss.

  1. Erstelle eine sunrise.php Datei für dein Plugin und define('SUNRISE',true); richtig define('SUNRISE',true); in deiner wp-config.php Datei.
  2. Erstellen Sie eine Tabelle, die die Tupel abbildet {blog_slug, blog_id, is_archived}

In sunrise.php führen Sie die folgende Logik aus:

 $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 } 

Schließlich füllen Sie die Felder Ihrer Tabelle, damit sie weiß, welche Blogs “archiviert” sind. In der Produktion möchten Sie wahrscheinlich einige Array-Sicherheitschecks hinzufügen und prüfen, ob “archiviert” “blog_a” ist, und yourdomain.com/blog_a dann zu yourdomain.com/archived/blog_a weiterleitet. All diese Dinge können in der sunrise-Datei behandelt werden.