Flytta WordPress baserad på Pages till WordPress Multisite

Det är inte helt ovanligt att man har en WordPress-installation där all information är sorterad med sidor, eller Pages som WordPress kallar det. I detta exempel tänkte jag visa hur man på ett smidigt sätt exportera ut delar av sin WordPress-sajt, närmare bestämt hur man exporterar ut allt som befinner sig under en viss Page. När all export är avklarad skall jag skapa nya sajter med WordPress Multiuser och varje sajt skall innehålla det som fanns under en viss Page.

OBS! För att kunna genomföra detta måste du ha skrivrättighet till filen

wp-admin/includes/export.php

Om du inte har detta behöver du prata med någon som kan hjälpa dig att ge dig det, alternativt exportera och importera alla dina sidor till en WordPress-installation som du själv kan bestämma över.

Min startposition

bild1

Här ser vi startsidan innehållande namn på några kurser. Varje sådan här kurs innehåller flertalet undersidor och dessa vill jag kunna exportera ut till varsin fil. För att lösa detta behöver du berätta för WordPress-export-funktion att inte exportera allt, utan bara den föräldersida du vill utgå ifrån.

Editera wp-admin/includes/export.php

I denna fil hitta raden

// grab a snapshot of post IDs, just in case it changes during the export
$post_ids = $wpdb->get_col("SELECT ID FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");

kommentera bort den och ersätt den med:

# Export a particular page and all its children
$post_ids = array();
$new_pages = array();
$new_pages[] = 2; # Parent page ID, which we will export, along with all its children
while (count($new_pages)) {
  $where = "WHERE post_parent IN (".join(',', $new_pages).")";
  foreach ($new_pages as $np) {
    $post_ids[] = $np;
  }
  $new_pages = array();
  $new_pages = $wpdb->get_col("SELECT ID FROM $wpdb->posts $where ORDER BY post_date_gmt ASC");
}
# $post_ids array now contains the pages we wish to export

Den vi skall ändra nu är raden

$new_pages[] = 2;

Siffran är nämligen den föräldersida vi vill utgå ifrån. Vi börjar med den första föräldern (kursen) vill vill exportera ut. För att få reda på dess ID loggar vi in på WordPress om vi inte redan är det, och hovrar över ”Edit”-knappen. Vi kan nu i status-raden se vilken ID denna sida har. i detta exempel 2319

bild2

Vi hoppar till texteditorn innehållande export.php och fyller i 2319.

$new_pages[] = 2319;

Exportera

Nu är det dags att i Dashboard klicka Tools/Export. XML-filen vi får sparar vi som namnet på förälder-sidan, i detta fall ”Allmänt om säkerhet.xml”

Importera

När ditt subset av sidor skall importeras till din nya WordPress Multisite skapar du när en nya sajt och ger den ett namn liknande det du exporterade ut, i detta exempel  ”Allmänt om säkerhet”. Logga in på denna nya sajt och välj Tools/Import, From WordPress. Peka på din fil  ”Allmänt om säkerhet.xml” och klicka även i rutan ”Download…” för att få med allt innehåll från länkade resurser.

Rinse and repeat…

Nu när första föräldern (kursen) är klar kommer resten att gå av bara farten. Hovra över Edit-knappen på nästa förälder-Page du vill importera, notera dess ID och skriv detta i export.php. Exportera din data, skapa en ny Multisite och importera din data där.

Sista fixen

Den tråkiga biten är klar och det är dags för den roliga! Du kanske vill ha kvar till tema från din gamla sajt? Kopiera ut det och installera det i din Super-Multisite (huvudsajten altså, en site kan inte ha egna teman)

Ja, ja, alles klar!

Om du följt alla dessa råd kommer du antingen att ha en ny och blank Multisite innehållande din gamla information, alternativt gjort sönder allt och sitter gråtande i ett hörn. I vilket fall som helst. Bra jobbat!

Postat under: Jobbet