Dotclear vers WordPress

dc22wp2-450px

Cette page est consacrée à la présentation d’un outil de migration de blog DotClear 2 (DC2) à WordPress 2 (WP).

Aujourd’hui, le plugin est encore très basique mais il se veut simple et rapide.

Il existe déjà une solution mais elle fait référence à des anciennes versions de DotClear et de WordPress. Bref, devant la difficulté je suis reparti d’un plugin d’import officiel.

Fonctionnalités

  • Testé avec DotClear 2.1.5 et WordPress 2.7 et supérieur (avec 3000 articles et 8000 commentaires)
  • Le serveur sur lequel est installé WordPress doit avoir accès à la base de données MySQL de DotClear 2.x
  • Import des catégories et des tags
  • Import des billets (doivent être écrit au format XHTML)
  • Import des commentaires
  • Réécriture des anciennes URLs (limité aux Apache équipés de mod_rewrite)
  • Intégré au menu Outils > Importer de WordPress

Problèmes connus

Si votre blog DotClear contient de nombreux articles, il se peut que la page de transfert partent en time-out. Un mécanisme a été mis en place pour découper l’insertion (coûteuse en ressources serveur) par paquet de 50 billets.

TODO

  • Améliorer l’interface dans pour les blog important où les opérations base de données longues oblige à faire des rechargement de pages.
  • Améliorer les performances dans le cas de blog ayant de très nombreux billets/commentaires (testeur, n’hésitez pas à vous manifester)
  • Package à diffuser sur wordpress.org
  • Traduction multilingue (at least english!)
  • Support des billets en Wiki

Historique

Version 0.36 (15 juillet 2009)
La fonction put_file_contents n’existe qu’en PHP 5 et plus. Elle a été ajoutée pour tous ceux qui fonctionne avec les anciennes version de PHP. Merci à Lazy.

Version 0.35 (2 juillet 2009)
Deux bugs majeurs ont été détectés. Le premier concerne la connexion à la base MySQL qui échouait car il y avait un filtrage des caractères spéciaux. Le second concerne le fichier .htaccess qui au passage de l’étape d’import des billets déclenchait une erreur 500 Apache. Effacer votre fichier .htaccess si ça arrive. La nouvelle version ajoute un <IfModule> devrait éviter le problème. Merci à Renard Blanc et à Sébastien.

Version 0.3-beta (26 mai 2009)
Grâce à l’aide de David, cette nouvelle version est plus robuste mais a fait ses preuves sur plus de 3000 billets et près de 8000 commentaires. Plusieurs optimisations ont été faites, des bugs corrigés et surtout un nouveau panel fait son apparation pour tester l’accès à la base de données et la possibilité d’écrire dans le répertoire ‘wp-content’.

Version 0.1-alpha (9 mai 2009)
Version téléchargeable avec pas mal de bug

FAQ

Certains billets n’apparaissent pas après l’import
C’est probablement lié à certains billets DotClear qui n’ont pas de catégorie. Pour leur affecter une catégorie « par défaut », connecter sur l’interface d’administration DotClear et créer une nouvelle catégorie « default » et notez son ID (cat_id). Pour mettre tous vos billets sans catégorie dans cette catégorie, exécuter la requête SQL suivante :
UPDATE <prefix_table>post SET cat_id = <nouvelle_categorie_id> WHERE cat_id IS NULL
Mon blog WordPress est sur un autre hébergement que mon blog DotClear 2, je suis bloqué
L’astuce consiste à installer WordPress et DotClear sur votre nouvel hébergement. Exporter les données de votre ancien blog DotClear 2 vers le DotClear 2 fraichement installé de votre nouvel hébergement et les opérations de migration seront ensuite possible.

Téléchargement

Encore en version alpha, n’oubliez pas de sauvegarder vos blogs avant de tenter l’opération

Installation

  1. Installez WordPress 2.8.1 (français ou anglais)
  2. Téléchargez le fichier dc22wp2_latest.zip sur votre ordinateur
  3. Dézipper l’archive et copier le fichier dotclear2.php sur le serveur hébergeant WordPress dans le répertoire <wordpress>/wp-admin/import/
  4. Vérifiez que le répertoire de <wordpress> et <wordpress>/wp-content sont accessible en écriture par votre serveur web équipé de PHP
  5. Pour les anciennes version de WordPress (avant la 2.8) Un bug (enfin je crois que s’en est un !) s’est glissé dans <wordpress>/wp-admin/includes/comment.php. Trouvez la ligne $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments et remplacer comment_post_ID par comment_ID.
  6. Identifiez-vous dans l’interface d’administration WordPress, aller dans Outils > Importer puis choisissez Dotclear2. L’assistant vous demandera les paramètres de votre base de données DotClear 2 pour réaliser le transfert vers la base de données WordPress.
  7. Une fois la migration terminée, vous devez retrouver tous vos articles, commentaires et catégories dans votre interface de WordPress
  8. Copier le répertoire images de votre blog Dotclear dans l’arborescence WordPress

Dons

Ce plugin vous a été utile ? N’hésitez pas à faire un don à son auteur pour l’encourager à l’améliorer ! Pas d’inquiètude, le don se fait par le site sécurisé de PayPal.

Support & liens

Quelques sujets à suivre :

Poster vos questions/demandes/rapports de bug dans les commentaires ci-dessous.

Update du 15 janvier 2011. A tous les lecteurs qui ont essayé en vain le plugin, je peux essayer de regarder en reproduisant l’import dans un environnement lab. Envoyez moi l’URL vers le dump MySQL de votre base de données par email (antoine (at) drochon (point) net et je verrais ce que je peux faire dans la limite de mon temps disponible.

124 réponses à to “Dotclear vers WordPress”

  1. laura dit :

    Bonjour,
    moi j’ai un problème tout con, je n’ai pas de dossier « import » dans wordpress/wp-admin
    :o
    si quelqu’un peut m’aider…

    merci ;)

  2. Maarc dit :

    @Laura : Hmm … En créant le dossier « import », j’ai pu passer la première étape …
    Par contre, j’ai un message d’erreur de WordPress :

    « Catchable fatal error: Object of class WP_Error could not be converted to string in C:\wamp\www\dev.wptest.fr\wp-includes\formatting.php on line 2772 » …

  3. R3ptor dit :

    J’ai exactement la meme erreur !

  4. Sylvain dit :

    @Maarc : j’ai la même erreur, apparemment, il ne trouve aucun post à importer (pour info, c’est un Dotclear 2.1.6 vers un WordPress 3.0.1)

  5. Bruno dit :

    Euh vous savez pas, mais dotclear marche très bien sur une base de donnée postgresql (mieux que Oracle/Mysql).
    Et là pour wordpress, hein on fait comment :-)

  6. Maarc dit :

    Un peu tardivement, certes, mais je rend compte de la fin de ma migration :
    En forçant l’étape suivante, ça passe …
    Il faut *avant* de faire la migration, faire une modification dans le script à un certain endroit pour avoir le titre des billets au complet, sinon la première lettre manque : confere un des commentaires de Julien, dans les commentaires précédents.
    Sinon, ça fonctionne.

    Pour forcer l’étape suivante, il suffit d’augmenter de 1 le nombre (en fait un paramètre passé en GET, pour ceux qui savent) passé en paramètre de l’étape par l’URL, lorsque vous êtes dans la page du plugin de migration à l’intérieur de l’interface d’admin de votre blog WP …
    On a l’URL : http://www.votresite.tld/blog_ou_ce_que_vous_avez_configure/wp-admin/je_ne_sais_plus_ce_quil_y_a_la?step_ou?etape=le_nombre_a_augmenter … Et là vous appuyez sur entrée, normalement, le script passe à l’étape suivante.

    Assurez-vous d’avoir des sauvegardes de vos bases avant, c’est de la bidouille, et cela remonte a deux mois, je ne voudrais pas être la cause d’arrachages de cheveux ;) … Si quelqu’un peut être plus précis sur la manipulation a effectuer, je l’en remercie par avance.

    Merci à l’auteur de ce plugin, et toutes mes confuses pour la longueur de ce commentaire.

  7. bitonio dit :

    Merci Maarc pour ces feedbacks, je vais regarder cette histoire de caractère manquant et livrer un update.

  8. bitonio dit :

    Salut Bruno, si tu lis l’anglais je t’invite à découvrir http://codex.wordpress.org/Using_Alternative_Databases

  9. […] me suis servi de cet outil d’importation de Dotclear 2 pour WordPress, simple et […]

  10. Nicolas dit :

    A l’import des utilisateurs, je reçois le message « Catchable fatal error: Object of class WP_Error could not be converted to string in /space/www/gl-ouv/0/1/0104011300536013/web/zecite.org/www.zecite.org/html/blog/wp-includes/formatting.php on line 2773 » et tout s’arrête.

    Que faire ?

  11. Mylène dit :

    Bonjour,
    J’ai une erreur à l’activation du plugin :

    Fatal error: Call to undefined function register_importer() in /homez.421/mandora/www/animasia2011/wp-content/plugins/dc22wp2_latest/dotclear2.php on line 1158

    Une idée de soluce ?

    Merci !

  12. intox2007 dit :

    Chez moi (WP à jour) le plugin provoque une erreur500 lors de son activation. Assez gênant.

  13. intox2007 dit :

    Hop correction ça fonctionne correctement !
    Superbe travail.

    Mais j’ai des soucis d’imports de commentaires , sur 22000 il n’en importe que 6700 (et forcément les plus vieux ) : une solution ?

  14. bitonio dit :

    22 000 oui ça fait du monde. Est-ce que ta base DotClear est exportable ? Si oui, je veux bien pour faire un tentative sur un hébergement à moi et trouver ce qui va pas. Pour l’upload du fichier d’archive, le mieux c’est de me le mettre à dispo et me donner l’url (et l’éventuel login/password) afin que j’y regarde de plus près.

  15. intox2007 dit :

    Tu veux un export sous quel format et de quelles données ?

  16. bitonio dit :

    SQL fait par mysqldump ça m’ira très bien.

  17. jmix90 dit :

    Des news ou une solution ? C’est frustrant de ne pas pouvoir utiliser un si bon outil :)

  18. Olivier dit :

    Alors j’ai utilisé avec succès le plugin de migration : un grand merci pour ce plugin.
    Pour arriver à mes fins :
    – conversion de tous mes billets en xhtml (bouton convertir en xhtml dans la page de modification du billet de dotclear)
    – validation du xhtml (bouton éponyme). Important car j’ai 2 billets récalcitrants (sur 80 au total) qui sont NOK. Je les ai supprimés et recréés dans WP.
    – traque des potentiels caractères invalides dans les titres des billets : en effet, le smiley ;-) faisait que l’url du billet contenait cette chaîne, qui se retrouve ensuite dans le fichier .htaccess : cela fait planter mon apache (erreur 500). En modifiant cette url (petit cadenas à côté de l’URL spécifique, toujours dans la page de modification du billet), ça passe impec ensuite.

    J’espère que mon commentaire vous sera utile.
    Olivier

  19. Bonjour à tous, les premières étapes ne m’ont pas posé de problème. Toutefois lors de l’importation des Users voici l’erreur :

    Catchable fatal error: Object of class WP_Error could not be converted to string in /home/meteocen/public_html/testv7/wp-includes/formatting.php on line 2829

    j’ai essayé de changer d’étape et de passer à la troisième et voilà ce que j’obtiens :

    Steps may take a few minutes depending on the size of your database. Please be patient.

    Voulez-vous vraiment faire cela ?

    Merci d’avance de vos réponses

    Cordialement

    Olivier

  20. atallah mouna dit :

    Bonjour,
    je veux exporter les données de Dotclear vers wordpress.
    je suit ce tutoriel Merci bien .
    mais le probléme reside que la quantité des données est trop et que le nombre des posts dépasse les 50 billets.
    qu’est ce que je peux faire?
    est ce que tu peux m’aider?
    Merci

  21. Le Malouin dit :

    Bonjour,
    j’ai procédé à l’installation d’un DC 2 sur le même hébergement que le WP. J’ai restauré un export de la base DC sur l’instance WP. J’ai suivi votre mode opératoire à la lettre. Seul le compte admin est importé de DC vers WP ; tout le reste (posts, catégories, commentaires, liens) est à 0.
    Avez-vous une idée ? Merci pour votre aide.

  22. bitonio dit :

    @Le Malouin : Pas d’idée mais si la base DotClear n’est pas confidentielle, je veux bien un dump que j’essaye de reproduire le bug sur un wordpress de lab. Mon email est antoine (chez/at/arobase) drochon (point/dot) net

  23. […] migration de Dotclear vers WordPress s’est très facile grâce au plugin dc22wp2. Pour ma part, l’étape a consisté de […]

  24. MMoi dit :

    Hello, je viens de recuperer le plugin, et quelques elements semblent necessiter un edit depuis la publication:

    – wp-admin/import n’existe plus. il faut mettre le fichier (dans un folder ? pour etre plus propre au moins) dans wp-contents/plugin

    – selon http://blog.courtine.org/2010/07/05/migrer-de-dotclear-a-wordpress/, le code utilise ne fonctionne pas bien avec les billets en wiki. j’ai donc integre l’edit indique (ajout de _xhtml)

    – dans la version WP que j’utilise (3.5..) il faut ajouter les lignes suivantes sans quoi on recupere une erreur d’appel a une fonction inconnue:

    Ligne 13
    if ( !defined(‘WP_LOAD_IMPORTERS’) )
    return;

    Ligne 225 (ligne avant * Dotclear Importer class)
    // Load Importer API
    require_once ABSPATH . ‘wp-admin/includes/import.php’;

    if ( !class_exists( ‘WP_Importer’ ) ) {
    $class_wp_importer = ABSPATH . ‘wp-admin/includes/class-wp-importer.php’;
    if ( file_exists( $class_wp_importer ) )
    require_once $class_wp_importer;
    }

    Ligne 248 (ligne avant class Dotclear2_Import)
    if ( class_exists( ‘WP_Importer’ ) ) {

    Ligne 1180: fermer la clause if avec un « } » (tout a la fin avant fermeture du PHP)
    } // class_exists( ‘WP_Importer’ )

Laisser un commentaire