Migration de Dotclear à WordPress

Vous l’aurez sans doute remarqué, j’ai récemment passé mon blog de Dotclear à WordPress. La raison étant que Dotclear comporte de nombreux bugs gênants (par exemple désactiver le plugin antispam fait que le moteur ne fonctionne plus. Bizarre pour un plugin…). Et qu’une connaissance blogueur m’a conseillé WordPress suite à mes désagréments.

L’installation de WordPress se fait les doigts dans le pif comme vous l’imaginez, par contre migrer le contenu de Dotclear dans  WordPress n’a pas été de la tarte. Il y a bien un plugin de migration dans WordPress, mais il a apparemment été écrit pour une version de Dotclear assez ancienne et ne fonctionne pas avec la 2.2. Je l’ai donc patché et j’ai pu migrer assez proprement le tout. Le seul attrape-nigaud qui reste est qu’il faut convertir tous les articles de dotclear au format xhtml avant de lancer l’import, sinon ça ne fonctionne pas.

Voici le patch à appliquer sur le plugin:

--- dotclear-importer.php    2010-06-19 18:22:27.000000000 +0100
+++ new.php    2012-02-04 14:50:59.154447247 +0000
@@ -129,7 +129,7 @@
         $dbprefix = get_option('dcdbprefix');
 
         // Get Categories
-        return $dcdb->get_results('SELECT * FROM '.$dbprefix.'categorie', ARRAY_A);
+        return $dcdb->get_results('SELECT * FROM '.$dbprefix.'category', ARRAY_A);
     }
 
     function get_dc_users()
@@ -153,9 +153,10 @@
         $dbprefix = get_option('dcdbprefix');
 
         // Get Posts
-        return $dcdb->get_results('SELECT '.$dbprefix.'post.*, '.$dbprefix.'categorie.cat_libelle_url AS post_cat_name
-                        FROM '.$dbprefix.'post INNER JOIN '.$dbprefix.'categorie
-                        ON '.$dbprefix.'post.cat_id = '.$dbprefix.'categorie.cat_id', ARRAY_A);
+        $query = 'SELECT '.$dbprefix.'post.*, '.$dbprefix.'category.cat_url AS post_cat_name '
+          . 'FROM '.$dbprefix.'post INNER JOIN '.$dbprefix.'category '
+          . 'ON '.$dbprefix.'post.cat_id = '.$dbprefix.'category.cat_id';
+        return $dcdb->get_results($query, ARRAY_A);
     }
 
     function get_dc_comments()
@@ -177,7 +178,7 @@
         set_magic_quotes_runtime(0);
         $dbprefix = get_option('dcdbprefix');
 
-        return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY position', ARRAY_A);
+        return $dcdb->get_results('SELECT * FROM '.$dbprefix.'link ORDER BY link_position', ARRAY_A);
     }
 
     function cat2wp($categories='')
@@ -308,11 +309,11 @@
                 $uinfo = ( get_userdatabylogin( $user_id ) ) ? get_userdatabylogin( $user_id ) : 1;
                 $authorid = ( is_object( $uinfo ) ) ? $uinfo->ID : $uinfo ;
 
-                $Title = $wpdb->escape(csc ($post_titre));
-                $post_content = textconv ($post_content);
+                $Title = $wpdb->escape(csc ($post_title));
+                $post_content = textconv ($post_content_xhtml);
                 $post_excerpt = "";
-                if ($post_chapo != "") {
-                    $post_excerpt = textconv ($post_chapo);
+                if ($post_excerpt_xhtml != "") {
+                    $post_excerpt = textconv ($post_excerpt_xhtml);
                     $post_content = $post_excerpt ."\\n<!--more-->\\n".$post_content;
                 }
                 $post_excerpt = $wpdb->escape ($post_excerpt);
@@ -395,8 +396,8 @@
                 // WordPressify Data
                 $comment_ID = (int) ltrim($comment_id, '0');
                 $comment_post_ID = (int) $postarr[$post_id];
-                $comment_approved = $comment_pub;
-                $name = $wpdb->escape(csc ($comment_auteur));
+                $comment_approved = '1';
+                $name = $wpdb->escape(csc ($comment_author));
                 $email = $wpdb->escape($comment_email);
                 $web = "http://".$wpdb->escape($comment_site);
                 $message = $wpdb->escape(textconv ($comment_content));

Bon week-end à tous!!

Vus : 1223
Publié par Etenil : 58