Es gibt das kostenlose WP-Plugin FG Joomla to WP. Das importiert aber keine JComments. Man muss eine Erweiterung kaufen, wenn man die importieren will. Naja, es waren bei mir nur 160 alte Kommentare, für deren Erhalt ich keine 30 Euro ausgeben wollte.
daoli
Wie gut, dass es im Web bereits auf Github von „daoli“ ein Skript gibt, das JComments nach dem Import der Artikel durch FG Joomla to WP vom alten CMS auf das neue überträgt. Leider ist das schon 10 Jahre alt. Doof. Das läuft ja nicht mehr unter einer aktuellen PHP-Version. Meine PHP-Fähigkeiten sind rudimentärst, das Ding umzuschreiben, hätte mich dezent überfordert. Also Feierabend? Verschwinden meine Artikel gluckernd im Orkus der Geschichte?
Hummel
Nein! Denn Christian Hummel hat das Script in das Hier und Jetzt gewuchtet. Der Rettungsring für meine Kommentare. Die Nachwelt jubelt!
Sie jubelt leider zu früh!
Das Skript lief bei mir nicht. Die Variablen-Verbindung funktionierte nicht so, wie vorgesehen. Also… eigentlich gar nicht. Als ich das gefixt hatte, las es zwar fröhlich alle meine Kommentare aus, aber schrieb sie nicht in die WordPress-Datenbank. Warum? Wieso? Nun… ich habe zwei Datenbanken auf meinem Webspace. Natürlich, wie mag es auch anders sein, befinden sich beide Webpräsenzen aus verschiedenen DBs.
JComments importieren
Also musste ich, mit meinen rudimentären… aber egal. Am Ende funktioniert das Skript bei mir jedenfalls reibungslos.
Das Skript via FTP auf die Site packen und im Browser aufrufen. Fertig. Nur EINMAL! aufrufen! Ansonsten viel Spaß beim händischen Löschen aller doppelten Kommentare! Und nicht vergessen, das Skript wieder zu löschen, gell? Das ist ja öffentlich, so dass es jeder ausführen kann.
Das Script
<?php
error_reporting(E_ERROR | E_WARNING | E_PARSE );
ini_set('display_errors', 'On');
// Enter Joomla DB Credentials
$jomuser = "J!-User";
$jompw = "J!-Pw";
$jomdb = "J!-DB";
$jomprefix = "jos_"; //edit J! prefix if necessary
// Enter WordPress Credentials
$wpuser = "WP-User";
$wppw = "WP-Pw";
$wpdb = "WP-DB";
$wpprefix = "wp_"; //edit J! prefix if necessary
// DB Configurations
$jomlink=mysqli_connect('localhost', $jomuser, $jompw);
@mysqli_select_db($jomlink, $jomdb) or die( "Unable to select joomla database");
@mysqli_set_charset('utf8');
$wplink=mysqli_connect('localhost', $wpuser, $wppw);
@mysqli_select_db($wplink, $wpdb) or die( "Unable to select wordpress database");
@mysqli_set_charset('utf8');
$query = "SELECT DISTINCT object_id FROM $jomprefix" . "jcomments";
echo $query;
print "
";
$pids = mysqli_query($jomlink, $query);
if (!$pids) {
echo mysqli_error();
}
$num = mysqli_num_rows($pids);
$i = 0;
while ($i < $num) {
$pid1 = mysqli_fetch_object($pids);
$pid = $pid1->object_id;
$query = "SELECT created FROM $jomprefix" . "content WHERE id = " . $pid;
echo $query;
print "
";
$created = mysqli_query($jomlink, $query);
if (!$created) {
echo mysqli_error();
}
$ct1 = mysqli_fetch_object($created);
$ct = $ct1->created;
$query = "SELECT id FROM $wpprefix" . "posts WHERE post_date_gmt = '" . $ct . "' AND post_type = 'post'";
echo $query;
print "
";
$wpids = mysqli_query($wplink, $query);
if (!$wpids) {
echo mysqli_error();
}
$wpid1 = mysqli_fetch_object($wpids);
$wpid = $wpid1->id;
$query = "SELECT * FROM $jomprefix" . "jcomments WHERE object_id = " . $pid;
echo $query;
print "
";
$comments = mysqli_query($jomlink, $query);
$comments_count = mysqli_num_rows($comments);
while ($info = mysqli_fetch_object($comments)) {
$author = $info->name;
$email = $info->email;
$url = $info->homepage;
$ip = $info->ip;
$cdate = $info->date;
$content = $info->comment;
$content = mysqli_real_escape_string($wplink, $content);
$query = "INSERT INTO $wpprefix"."comments (comment_post_ID, comment_author, comment_author_email, comment_author_url, comment_author_IP, comment_date, comment_date_gmt, comment_content) VALUES ('" . $wpid . "', '" . $author . "', '" . $email . "', '" . $url . "', '" . $ip . "', '" . $cdate . "', '" . $cdate . "', '" . $content . "')";
echo $query;
print "
";
mysqli_query($wplink, $query);
}
$query = "UPDATE $wpprefix"."posts SET comment_count = " . $comments_count . " WHERE ID = " . $wpid;
echo $query;
print "
";
mysqli_query($wplink, $query);
$i++;
}
mysqli_close($link);
?>