WordPress-Kategorien als Drupal-Tags importieren

Bevor ich jetzt anfange, noch mehr Rezepte und Kategorien per Hand einzuhacken, schauen wir mal gleich, wie weit wir damit kommen diese aus WordPress zu importieren. Das wird eine ganz ähnliche Mechanik wie in Joomla werden, soviel kann ich jetzt schon absehen. Aber jetzt erstmal Schritt für Schritt. Und eine Warnung vorneweg: sowas macht man als Initial Load auf einer jungfräulichen Drupal-Instanz, wenn schon per Hand Kategorien als Tags angelegt wurden, hat man leicht doppelte Einträge und muss das dann erstmal bereinigen. Übrigens: kommen sie nicht auf die Idee, bereits vorhandene Tags einfach mit dem phpmyadmin aus der Datenbank zu löschen, das führt ganz schnell zu Inkonsistenzen!

Voraussetzungen

Wir ignorieren mal die Möglichkeit der geschachtelten Tags, die brauche ich nicht wirklich, eine Ebene reicht. Ich benutze auch das bereits vorhandene Vokabular Tags, das hat bei mir die vid=1. Die vorhandenen Taxonomien und vids sind  nachzuschauen in der Tabelle taxonomy_vocabulary, die zugehörigen Vocabulary-Einträge stecken in der taxonomy_term_data.

Ich brauche meine Kategorien zum Import in einer kleinen Tabelle, die hole ich mir aus Access und schubse sie als CSV nach MySQL rein.

Eine sehr praktische Funktion zum Import

Für den tatsächlichen Import benutze ich dann die Drupal-Funktion taxonomy_term_save($term). Die nimmt als Minimum-Parameter den Namen des Tags und die vid der Taxonomie, das sieht im ersten Testfall so aus:

    $name = 'Testwort2';
    $vid =1;
    $term = new stdClass();
    $term->name = $name;
    $term->vid = $vid;
    taxonomy_term_save($term);
    echo "Neuer Term erzeugt, ID = ".$term->tid;

Wichtig zu wissen: die Funktion erzeugt  immer einen neuen Eintrag in der taxonomy_term_data mit einer neuen tid, auch wenn der Name des Tags schon mal drinsteht. Ich gehe hier aber mal von einem Initial Load aus bzw. lösche vor dem Import die bereits vorhandenen Terms, die ich zum Testen manuell reingehackt habe, einfach raus.

Jetzt kommt unsere Import-Tabelle 00_kat_import ins Spiel, an der ist nicht viel dran, nur id und name, und die kennen wir auch schon:

kat_import_tabelle
kat_import_tabelle

Die lesen wir uns jetzt mit einem  db_query ein und speichern unsere neuen Terms in der Foreach-Schleife:

$query = db_query("SELECT name FROM 00_kat_import");
    $records = $query->fetchAll();
    
foreach ($records as $record) {
  
    // echo $record->name."<br>";
    $name = $record->name;
    $vid =1;
    $term = new stdClass();
    $term->name = $name;
    $term->vid = $vid;
    taxonomy_term_save($term);

  
} //end foreach

Und das war auch schon der ganze Zauber! Da sind die neuen Tags:

import_tags
import_tags

Diese Aktion macht man wie gesagt genau einmal als Initial Load. Wenn die Kategorien erstmal auf die Tags abgebildet sind, werden sie in Drupal weitergepflegt, sonst gibts allzuleicht Inkonsistenzen auf der Datenbank.

So, die Kategorien hätten wir schon mal. Jetzt bräuchten wir noch ein paar Rezepte…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert