Export Dotclear 2 vers WordPress 2 (dc22wp2)

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

96 réponses à to “Export Dotclear 2 vers WordPress 2 (dc22wp2)”

  1. Dodot dit :

    J’utilise le plugin ComBack pour Dotclear, et d’autres plugins secondaires. Quels sont les plugins Dotclear supportés par votre outil de migration ?

    J’imagine la réponse : aucun. Dans ce cas, comment puis-je récupérer mes combacks ?

  2. bitonio dit :

    @dodot
    Effectivement, je me concentre pour l’instant sur les fonctionnalités de DotClear 2 sans plugin.
    Le plugin comBack a l’air de reprendre la fonctionnalité de hiérarchie de commentaire/fil de réponse introduite dans WordPress 2.7. Techniquement ça doit être possible, il faudrait implémenter le code dans le plugin d’import.

  3. Dodot dit :

    @bitonio
    Je vais jeter un coup d’oeil !

  4. albaran dit :

    Voir aussi
    http://www.wordpress-fr.net/support/sujet-2944-import-dotclear-fichier-texte
    qui passe par un fichier : Dotclear et WordPress n’ont pas besoin d’être sur le même serveur.
    Il y a un mécanisme de récupération que l’on peut reprendre. Tout comme le script complet que j’ai abandonné.

  5. Renard Blanc dit :

    bonjour, aprés mainte recherche sur la question , je tente de passer mon dotclear 2.1.5 sur un Wp 2.8. l’avantage le thème utiliser est déjà un thème Wp (studiopress).et j’ai trouver votre blog.

    Mais la partie 5 ne fonctionne pas chez moi malgré que les blog soit tous sur le même serveur, il n’arrive pas a se connecter a ma Bdd DC. pourtant j’ai repris les infos du fichier config Dc. j’ai même modifier ce fichier pour que dc tombe en panne et me confirme donc les bonnes info. mais non le script ne comprend pas et se dit dans l’impossibilité de se connecter. la partie 4 était en trop ?

    help si quelqu’un m’entend ;)

  6. bitonio dit :

    @Renard Blanc

    La partie 5 corresponds à l’import des posts, partie délicate :-)
    Si les autres parties ont bien fonctionné c’est que déjà la connexion à la base se fait bien.

    Quelques questions :

    - vérifies que le répertoire wp-content/uploads ait bien accessible en écriture
    - Les posts de DC ont-ils bien des catégories ?
    - Combien as tu de posts dans DotClear ?

    A partir de là je pourrais sans doute avancer :)
    @ bientot

  7. Renard Blanc dit :

    @bitonio

    je parlais de la partis 5 de l’installation

    # 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.

    impossible de se connecter il me renvoie sur les paramètres
    bon la en plus j’ai tester 3 méthodes avant d’en trouver une fonctionnel mais les majuscule des mes ancienne url ne sont pas repris je vais donc avoir un gros soucis avec mon référencement actuel.

    - pourquois wp-content/uploads ?
    - oui mes posts Dc sont tous sous catégories
    - oh pas grand chose 94 articles 70 commentaires

    bon je vais tout effacer et reprendre a zéro ;)

  8. bitonio dit :

    - wp-content/uploads est utilisé pour sauvegarder des fichiers temporaires sur disque au lieu d’utiliser la mémoire du serveur (limitée).
    - ok
    - effectivement c’est pas grand chose

    Pour les majuscules, c’est étrange, est ce que tu m’envoyer ton fichier .htaccess généré (bitonio sur gmail) ?

  9. Sébastien dit :

    Tentative d’import
    Blog pas si gros 183 billets / 360 commentaires
    Import Catégorie : ok
    Import Users : ok

    Et la pour les billets :

    Warning: Division by zero in wp\wp-admin\import\dotclear2.php on line 719
    0% des billets ont été importés.

    (alors qu’il m’en a recuperé 98)

    De plus ca me genere un fichier .htaccess qui me plante l’accès au site

    Et la c bloqué direct.

  10. bitonio dit :

    Salut @Sébastien,

    Tu as découvert un joli bug !

    Pour refaire fonctionner le tout, supprimer ton fichier .htaccess dans le répertoire où est installé le blog (parfois le fichier est caché par certains logiciel FTP, dans les options tu dois avoir quelquechose comme ‘afficher les fichiers cachés / commençant par point).

    Ensuite, écrase le fichier dotclear2.php par celui en version 0.35 et relance l’import, ça devrait aller beaucoup mieux :-)

    N’hésites pas à poster ici si tu as de nouveau des soucis.

  11. Sébastien dit :

    Ca marche !
    Juste dommage que j’ai pas été patient et que j’ai « réussit » tant bien que mal à faire ma migration, mais ta nouvelle version aidera beaucoup de personnes.
    Tiens et pendant que tu es encore chaud, une remarque peut etre pas directement pour toi, mais génante pour la migration.

    Mes premiers articles sous dotclear étaient au format wiki et non xhtml comme les anciens, ce qu’il fait que ceux la sont quasi inexpoitable pour tout ce qui est média (alors que ceux en xhtml sont assez simple à corriger)

    Je sais que sous dotclear c’est juste une petite routine qui les transforme, je sais pas si de ton coté c’est possible de recuperer ce truc pour l’import.

    Ou alors de prévenir les gens de changer leurs articles s’ils veulent avoir moins de chose à corriger pour les médias

    De mon coté j’ai réussit à recup mes médias pour les articles xhmtl en copiant le repertoire public de mon blog BC à la racine du blog WP, c’est pas des plus propres mais ca à le merite de fonctionner (pour les articles xhtml, les articles wiki je dois les refaire)

    Voila et merci pour la correction

  12. bitonio dit :

    Merci Sébastien,

    C’est une bonne remarque, je pense qu’il existe des fonctions Wiki vers XHTML donc c’est une fonctionnalité que je vais ajouter à la TODO list.

  13. Renard Blanc dit :

    j’ai eut le même soucis avec tout les liens sur tout les billets, après tes tests je me suis rendus compte qu’il fallait que je refasse tout les liens de mes billets.
    Par contre mon problème d’url c’est régler depuis.

    merci a toi pour ce petit script éfficace

  14. lazy dit :

    Bonjour,

    Tout d’abord merci pour ton plug-in et du travail fourni, c’est vraiment sympa !
    J’ai installé donc le fichier dans la bon répertoire de wordpress, je suis donc allé dans l’interface WP > Outils > Importer > Dotclear2 .x

    J’ai renseigné tout les champs comme il faut, il se connecte bien mais arrivé à l’étape 5, il commence l’importe et me marque cette phrase :

    Fatal error: Call to undefined function: file_put_contents() in /homez.18/xxxxxx/www/wordpress/wp-admin/import/dotclear2.php on line 531

    Du coup il a le quart de mes billets qui s’importe, d’où peut venir le problème ? Merci encore.

  15. bitonio dit :

    Salut lazy,

    Vérifie que ton répertoire wp-content est bien accessible en écriture par le serveur web.
    En règle générale, il faut changer les autorisations pour mettre « Other » en +w. Dans certains cas (hébergement mutualisé) il suffit de mettre le user avec le +w

  16. lazy dit :

    Merci de ta réponse, je vais essayer, je te tiens au courant !

  17. bitonio dit :

    Je viens de regarder, en fait la fonction n’existe qu’en PHP 5.
    A tout hasard tu serais pas en PHP 4 ?

  18. lazy dit :

    euhhh… Je ne sais pas. J’ai un 90 Plan chez OVH, mais il me semble que c’est du PHP5 !

    Comment je peux vérifier ca ? Merci.

  19. bitonio dit :

    Si tu es chez OVH, tu dois être en PHP5
    Quoiqu’il en soit, j’ai fait une version 0.36 qui définit la fonction si elle n’existe pas.

    Ca devrait être mieux. Tu peux réessayer ?

  20. lazy dit :

    oui bien sur, je vais essayer ca. Merci

  21. lazy dit :

    C’est bon, l’importation est réussie ! Pas eu d’erreur.

    Je te remercie beaucoup pour ton aide, c’est sympa, je ne manquerais pas de mentionner ton plug in et aide dans ma nouvelle version.

    Maintenant, reste plus qu’a modifier les mises en pages, le wiki est pas pris en compte donc bon… Mais c’est pas grave, le plus dur est fait !

  22. bitonio dit :

    Heureux d’avoir pu contribuer à une migration sans trop de douleur. La conversion des billets DotClear rédigé en WikiText est prévue dans une future version. Bon courage à toi !

  23. Renard Blanc dit :

    Bitonio , tu as une astuce pour les liens dans les billets ?

    t’as encore besoin de l’accée chez moi ? :) ou je peut te fermer la porte ;)

  24. bitonio dit :

    @Renard blanc, tu peux fermer les accès, on est bon ;-)

  25. David Latapie dit :

    D’abord, je tiens à remercier bitonio pour l’incommensurable aide qu’il m’a apporté. 3000 billets, 9000 commentaires et 85 % a été migré :)

    Donc merci encore une fois bitonio, même si je t’ai déjà remercié en privé :-)

    J’ajoute une doléance, qui pour moi arrivera trop tard (je vais avoir quelques centaines de billets à modifier) : la conservation de la langue du billet.

    Pour ceci, il faut que le WordPress soit déjà configuré en multilingue. Le plugin WPML est pas mal (je ne lui trouve rien à redire), mais il existe aussi Gengo et au moins deux autres dont j’ai oublié le nom.

    Enfin, pour faire les choses proprement, il faut modifier son thème (plonger dans le PHP) pour ajouter une variable php dans body. Eh oui ! Tous les thèmes (bien fait) de Dotclear sont multilingues de base, mais je ne pense pas que ce soit le cas de ceux de WordPress.

    Voili-voilou. Même si cette fonction ne devait jamais apparaître dans le convertisseur, la mention est importante pour tout personne qui migre : en l’état actuel, la migration ne conservera pas le type de langue !

  26. Caaam dit :

    Bonjour,

    Je tente depuis quelques heures de migrer mon blog Dotclear (en 2.1.5) vers un tout nouveau compte WordPress sans succès.. En fait j’ai toujours le même problème : impossible de se connecter à la base de donnée et/ou il ne trouve ni catégorie, ni auteurs, ni posts.. Je suis hébergée chez free, est-ce qu’il y a une manip particulière à faire?

    Merci!

  27. bitonio dit :

    @Caaam

    Pas de manip particulière si ce n’est d’utiliser la même base de de données pour faire le transfert vers WordPress. Je sais que l’hébergement de Free a quelques limitations. Au besoin contacte moi en privé pour que j’y regarde de plus près :)

  28. Caaam dit :

    Merci, j’ai fini par opter par les grands moyens, changement de serveur et tout le tralala.. visiblement le problème venait du fait que chez free avec dotclear, j’avais une base de donnée postgre SQL, WordPress ne pouvait donc pas communiquer avec elle… je réutilise néanmoins l’outil de migration, tout s’est passé à merveille sauf pour les liens, mais n’en ayant que peu je vais recopier ça à la main… merci!!

  29. sigma6 dit :

    Bonjour,

    Tout d’abord chapeau pour ce script d’import, je crois qu’il va en sauver plus d’un :)

    Pour ma part, je rencontre un petit souci. La connexion à la base sql est impossible.
    Le plugin est marqué « version 0.35-beta » dans wordpress. Or quand je lis l’historique du plugin, je comprends que ce bug de connexion était présent en 0.35 et réglé en 0.36. Aurais-je téléchargé la mauvaise version du plugin ?? Je suis pourtant allé sur le lien que tu donnes « http://www.digitaladventures.fr/wp-content/uploads/dc22wp2_latest.zip », je ne comprends donc pas !

    Une idée ?

    D’avance merci.

    sigma6

  30. bitonio dit :

    @sigma6

    L’étiquette dans l’interface est effectivement pas à jour (bien vu);
    Pour ce qui est du bug, il est corrigé mais si tu as des soucis, peut-être est-ce à cause d’un user avec des caractères qui sont supprimés (la fonction sanitize de WordPress).

    Tu peux refaire un test en changeant la ligne

    add_option(‘dcuser’, sanitize_user($_POST['dbuser'], true));

    par

    add_option(‘dcuser’, $_POST['dbuser'], true);

    Avec un zeste de chance ça passera ;-)

  31. sigma6 dit :

    Bonjour,

    J’ai aussi ce problème de connexion à la base sql (je suis chez free.fr aussi). Par contre, j’ai remarqué que dans wordpress, le plugin indique version 0.35, or ce bug de connexion semble avoir été corrigé en 0.36. Aurais-je téléchargé la mauvaise version ? J’ai pourtant suivi le lien donnée sur cette page.
    Une idée ?

    D’avance merci !

    sigma6

  32. bucheron dit :

    Merci pour ton plugin qui est génial.

    Cependant, j’ai un problème.
    J’ai réussi à tout importer sauf que le contenu texte de mes articles n’ont pas été convertit (format wiki)

    peux tu me dire qu’elle est la démarche à suivre avec que les styles appliqués et les images soient conservés ?

    d’avance merci

  33. toto dit :

    super ce plugin

  34. Alko dit :

    Quand on a un dotclear récent (qui duplique ses billets en xhtml), le formatage texte peut être importé comme suit :

    éditer le fichier dotclear2.php fourni, vers la ligne 627, en dessous de
    extract($post);

    rajouter :
    if (isset($post_content_xhtml))
    $post_content = $post_content_xhtml;

  35. kritrofr dit :

    Bonjour,

    Merci pour ce plugin. J’ai par contre un gros soucis au niveau du transfert des commentaires. Dans mon ancien blog dotclear j’avais plus de 800 billets et 4000 commentaires, et j’aurais aimé les transférer sur le nouveau blog wordpress. Pas de soucis pour les articles. Par contre, pour les commentaires, il s’arrête à juillet 2008. Après il ne me les transfère pas !

    Avez-vous une explication/solution par rapport à ce sujet ?

    Merci par avance…

  36. kritrofr dit :

    Pour les commentaires il apparaît ce message d’erreur (sur une cinquantaine de lignes). Cela se passe pendant le traitement, avant qu’il me dise que tout va bien.

    Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /var/www/virtual/coquelicots.fr/htdocs/goujou/wp-includes/comment.php on line 1097

  37. bitonio dit :

    Salut kritrofr,

    L’erreur semble se faire lors de la mise à jour d’un commentaire. Pas facile à debugger. Tu aurais un dump de ta base de données dispo qqpart ? Tu peux m’envoyer l’URL à l’adresse email situé à la fin la page A propos. Je vais essayer de reproduire le problème.

  38. kritrofr dit :

    Merci pour la réponse.

    C’était en fait un pb tout à fait idiot… Il suffisait de recharger la page après chaque « paquet » de commentaires traités, jusqu’à arriver au total ; et surtout pas à l’inverse de cliquer sur l’étape suivante, sans rafraîchir la page de chargement !

    Par ailleurs, il n’affiche le message d’erreur qu’avant de recharger la page pour la première fois. Après il ne le fait plus !

    Merci bcp pour votre aide.

  39. Mathieu dit :

    Bonjour,
    J’essaye de faire une migration depuis un dotclear2 chez free.. mais j’ai un soucis de connexion à ma base de données. Est-ce que ton script marche avec les base postgreSQL?? (obligatoire chez free pour dotclear).

    Si des personnes ont réussi leur migration chez free, je suis preneur de la procédure car pour le moment, je rame!!

  40. bitonio dit :

    Salut Mathieu,

    Malheureusement le script ne fonctionne qu’avec mySQL

  41. RenardBlanc dit :

    Salut bitonio

    je refait un test d’un autres dotclear, je voulais savoir ton indication numéro 5 dans installation. le fameux bug. c’est encore valable ? ou pas ?

    bonne continuation

  42. bitonio dit :

    Salut RenardBlanc, le bug semble avoir disparu dans la toute dernière version de WordPress 2.8 donc cette étape peut être sauté. J’ai mis à jour la documentation ci-dessus. Merci !

  43. lotusss dit :

    merci pour le plugin mais j’ai un souci, existe-t-il un moyen ou un plugin qui convertit automatiquement les billets en xhtml sous dotclear??

    merci d’avance pour la réponse

  44. bitonio dit :

    Bonjour lotusss,

    Je crois que les dernières version de DotClear sauvegarde en parallèle XHTML et Wiki.
    Je veux bien que vous m’envoyiez par email la base si elle est pas trop grosse ni trop confidentielle biensûr :-)

    A bientôt

  45. RenardBlanc dit :

    lol si je t’envoies les 130 billets de ma femme tu va peut être avoir peur mais je prend note de ta proposition ;)

  46. RenardBlanc dit :

    arf bitonio j’ai un soucis depuis deux jours de mon cotés avec l’import des commentaires des qu’il essaie ca me plante wordpress

    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.

    et après j’ai plus accés a rien et je suis obliger de tour effacer et recommencer
    pourtant sur ce blog j’en est que 73 et tout les billets étais en xhtml

    ta une idée du problème

  47. bitonio dit :

    Salut @RenardBlanc

    Des logs plus explicites coté serveur devrait t’indiquer ce qui se passe. Généralement, c’est un timeout ou un truc méchant de ce genre. Tu as quel hébergement ?

  48. RenardBlanc dit :

    Re . bon d’apres les log sur mon blog il rentre en erreur au moments de creer le .htaccess sur certains titre de mes billets.

    dans le log des erreurs
    [Mon Nov 16 10:33:07 2009] [alert] [client 82.250.107.138] /home/tititort/public_html/le_blog_de_doudou-new/.htaccess: RewriteCond: cannot compile regular expression ‘^post/2008/09/11/Besoin-de-Visiteurs-suivez-le-guide-[1er-billet,-Autosurf]$’\n

    dans la foulé une belle erreur 500 qui bloque tout le blog

    et dans le .htaccess j’ai cette ligne

    RewriteRule ^index.php$ http://www.tititortue.net/le_blog_de_doudou-new/?p=14? [R=301,L]
    RewriteCond %{QUERY_STRING} ^post/2008/09/11/Besoin-de-Visiteurs-suivez-le-guide-[1er-billet,-Autosurf]$

    en sachant que sur les 74 billets j’en est trois avec des [] dans le titre, cela poserais t’il le problème.

    je confirme en enlevant les trois redirections sur les titre avec des [] dedans le fichier continue son bonhomme de chemin. par contre il ma loupé mes liens du blogroll ;)

    voila a toi de voir si une modification est possible pour eviter ce désagrément.

    merci

  49. bitonio dit :

    @RenardBlanc, bien trouvé, effectivement il faut mettre le répertoire dans lequel est installé le blog avec un accès écriture (chmod ou ton client FTP/SSH te permettra de changer ce droit).

Laisser un commentaire