Comment importer un blog de Dotclear à WordPress 2.3+

modifié le 30 juillet 2007

Ce script d'importation importe articles, billets (utilisateurs, commentaires, tags, catégories), liens (catégories) dans WordPress 2.3+ à partir d'un fichier d'export Dotclear.

Une procédure de reprise permet l'importation de grands blogs.

Le script d'importation avec ses tutoriaux est disponible dans la distribution Wordpress sinon ici.

Conditions

Dans Dotclear 1

Dans Dotclear 2

Dans le panneau d'exportation, exporter votre base de données :

Votre fichier blog-backup.txt est maintenant sauvegardé sur disque local.

Vérifier ce fichier blog-backup.txt avec un éditeur. Regardez s'il-y-a des messages d'erreur, si oui, voir le paragraphe Quand les choses vont mal ci-dessous. Ne le modifier, ne le sauvegarder qu'avec un éditeur qui supporte l'UTF-8.

C'est tout pour Dotclear !

Dans WordPress

Une fois que WordPress est juste installé et si vous êtes nouveau pour WordPress :

Si Dotclear flatimport ne figure pas dans la liste des scripts d'importation disponibles, utiliser le package :

Le script d'importation a besoin pour un WordPress déjà utilisé :

Le répertoire wp-content/uploads doit être disponible en mode écriture. Il est utilisé par le script flatimport pour sauvegarder le fichier blog-backup-recovery.txt lors d'un point de contrôle.

Noter que le nom d'utilisateur Dotclear admin n'est pas importé, pour préserver admin WordPress par défaut.

Il est impératif de sauvegarder vos données existantes de WordPress avant de faire l'importation. La version 2 de WordPress Database Backup est recommandée pour WordPress.

Installation spécifique pour du code embedded (optionnel)

WordPress supprime les balises <embed> <object> <param> et leur contenu. Si vous voulez importer ces balises pour afficher de l'audio et de la video sur votre blog, y compris le code de Google, DailyMotion, YouTube… et d'autres players, il faut modifier le fichier wordpress/wp-includes/kses.php pour y inclure :

if (!defined('CUSTOM_TAGS'))
    define('CUSTOM_TAGS', false);
// You can override this in your my-hacks.php file
if (!CUSTOM_TAGS) {
$allowedposttags = array (

  'address' => array (),
  …

to

if (!defined('CUSTOM_TAGS'))
    define('CUSTOM_TAGS', false);
// You can override this in your my-hacks.php file
if (!CUSTOM_TAGS) {
  $allowedposttags = array (
	'embed' => array (
			'align' => array (),
			'allowfullscreen' => array (),
			'allowScriptAccess' => array (),
			'animationatstart' => array (),
			'animationstart' => array (),
			'autoplay' => array (),
			'autostart' => array (),
			'bgcolor' => array (),
			'console' => array (),
			'controller' => array (),
			'controls' => array (),
			'controltype' => array (),
			'data' => array (),
			'Displaysize' => array (),
			'filename' => array (),
			'flashvars' => array (),
			'height' => array (),
			'id' => array (),
			'name' => array (),
			'pluginspage' => array (),
			'quality' => array (),
			'showcontrols' => array (),
			'showdisplay' => array (),
			'showstatusbar' => array (),
			'src' => array (),
			'style' => array (),
			'transparentatstart' => array (),
			'type' => array (),
			'width' => array (),
			'wmode' => array ()
			),
		'object' => array (
			'classid' => array (),
			'codebase' => array (),
			'data' => array (),
			'height' => array (),
			'id' => array (),
			'standby' => array (),
			'type' => array (),
			'viewastext' => array (),
			'width' => array ()
			),
		'param' => array (
			'name' => array (),
			'value' => array ()
			),
			

	'address' => array (),
  …

Noter que la balise <embed> est une faille de sécurité potentielle. Surveillez son contenu !

Crédit à Matt (malandry) pour l'exemple initial.

Travailler avec une nouvelle structure de répertoires

Vous devez modifier des balises dans vos billets si vous changez la structure des objets référencés tel que images, documents, podcasts… dans la nouvelle structure du blog.

Vous pouvez modifier le fichier blog-backup.txt en utilisant un éditeur approprié UTF-8 ou utiliser la procédure de changement incorporée au script d'importation.

On peut copier le fichier blog-backup-change.php à partir des flatimport-addons dans le répertoire /wp-content/uploads ou en créer un à partir de l'exemple, puis l'éditer pour entrer les adresses voulues : anciennes dans le premier tableau $post_old_strings ; nouvelles dans le deuxième tableau $post_new_strings. The sample blog-backup-change.php to change URL's within posts follows:

<?php
# replacement strings for posts
$post_old_strings = array(
'http://site_dc.free.fr/share/video',
'http://site_dc.free.fr/share/audio'
);

$post_new_strings = array(
'http://www.site_wp.net/public/video',
'http://www.site_wp.net/public/audio'
);
# end of replacement strings for posts
?>

Faire bien attention, il n'y a aucun test de validité pour utiliser cette procédure, vous pouvez donc l'utiliser pour remplacer n'importe quelle chaine.

La procédure d'importation

Préparation de l'importation

Effectuer l'importation

Important : si vous avez un gros fichier blog-backup.txt et si l'écran se fige sans nouveau message ou si vous avez un message d'erreur, pas de panique ! vous devez réinitialiser la procédure d'importation jusqu'à ce que le message Fin d'importation s'affiche. Le script d'importation prend des points de contrôle et repart du dernier effectué :

L'importation est faite !

Traitement après importation

Changer les mots de passe des utilisateurs (excepté admin).

Désactiver l'éditeur wysiwyg pour accepter le code video ou audio fourni par Google, DailyMotion, YouTube, et autre players…

Quand les choses vont mal

Fin anormale

L'importation ne se termine pas sans message ou vous avez un message semblable à celui-ci :

Internal Server Error
The server encountered an internal error
or misconfiguration and was unable to complete your request.
Apache/ProXad [Oct 16 2006 22:55:06]
Server at www.monsite.com Port 80

ou celui-ci :

Fatal error: Maximum execution time of nn seconds exceeded

La cause principale est que le script d'importation n'a pas assez de temps pour terminer. Les serveurs limitent le temps d'exécution à 20 ou 30 secondes. Compter environ 1 à 3 secondes pour 10 lignes du fichier blog-backup.txt.

Problèmes avec le fichier blog-backup.txt

ouvrir le fichier blog-backup.txt avec un éditeur compatible UTF-8 (Notepad++, Notepad2 …),

Fichier blog-backup.txt incomplet

Tous les billets ou commentaires… ne figurent pas dans le fichier d'export de Dotclear. La cause principale est que le plugin d'exportation n'a pas eu assez de temps pour terminer. Essayer d'ajouter la ligne suivante au début du script d'exportation :

@ini_set('max_execution_time', 1200);

ou essayer de transférer votre blog Dotclear sur un blog local, sur votre disque dur en utilisant un logiciel du type WAMP5 pour Windows, ou l'instruction @ini_set('max_execution_time', 1200); est active ; voir BigDump: Staggered MySQL Dump Importer si nécessaire.

Un ticket a été ouvert pour ce problème par un développeur Dotclear. Voir Ticket #147 pour les dernières informations.

Summary taken tuesday 2007-03-27:

DC2 timeline Ven, Mar 23, 2007 0:55
Ticket #147 (defect created): import / export de gros blogs
Reported by: biou
Description : il serait intéressant d'avoir une interface ajax pour le plugin d'import/export,
ainsi que pour le plugin flatexport de dc1, afin de contourner la limite du timeout php.
(pep a des idées sur le sujet je crois)

Problèmes avec le dispositif de reprise

Vous avez des messages de ce type :

Warning: fwrite(): supplied argument is not a valid stream resource…

y compris le suivant

Warning: fopen(…wp-content/uploads/blog-backup-recovery.txt): failed to open stream…

le script d'importation flatimport ne peut pas créer le fichier blog-backup-recovery.txt. Le répertoire uploads doit être disponible en mode lecture-écriture. Vous devez l'initialiser dans ce mode.

Problème avec des caractères internationaux

Si vous avez des problèmes avec des caractères accentués, ou autres, vérifier que :

Autres

Comment procéder avec de nouvelles adresses URL

L'importation modifie les identificateurs ID des billets (pour un billet donné, l'URL WordPress n'est pas la même que l'URL Dotclear). Le référencement du site dans Google par exmple, sera impacté.

La règle RewriteRule suivante a mettre dans le fichier .htaccess pour le blog permet pour tous vos liens indexés par Google d'être redirigés de façon permanente par le 301 status code: Moved Permanently vers les nouveaux liens WordPress :

RewriteRule ^index.php[/]([0-9]+)[/]([0-9]+)[/]([0-9]+)[/][0-9]+-(.+)$ http://your_site_here/$1/$2/$3/$4 [R=301,L]

Modifier la chaine your_site_here en votre adresse de site, par exemple 64k.be ou www.egocyte.net

Sources

Comment importer des pages

Les pages qui sont des billets Dotclear 2 posts sont importées directement. Les autre pages, les fichiers de pages externes de répertoire related doivent être importées manuellement.

Un plugin spécifique WordPress doit être utilisé si du code PHP est inclus dans votre page Dotclear.

Liens

Comment importer des images

Un plugin spécifique WordPress peut être utilisé pour déplacer les images Dotclear vers le blog WordPress et remplacer les références aux anciennes adresses par les nouvelles.

Liens

Dans les éléments additionnels figure une copie (version 1.3.2) du plugin de Matt Mullenweg modifié par Sarah pour WordPress 2. Voir Cache Images plugin for WordPress pour la dernière version.

Import versus update

Le script flatimport vous permet de faire une première importation puis d'importer à nouveau une version plus récente du fichier d'export Dotclear. Si vous voulez installer votre blog WordPress tout en continuant à blogger avec votre blog Dotclear, utiliser le bouton Mise à jour pour ajouter les nouveaux éléments et mettre à jour ceux déjà importés. Ainsi vous pouvez mettre à jour votre blog WordPress avec les dernières données au moment du basculement.

Si vous bloggez avec le blog WordPress, utilisez le bouton Importer pour ajouter seulement les nouveaux éléments Dotclear (les éléments déjà importés ne seront pas modifiés).

Migrations d'utilisateurs et exemples

Un tutoriel utilisateur

How to migrate from Dotclear 1.2 to WordPress 2.1. See the french ced post: From Dotclear 1.2 to WordPress 2.1.

Un fichier exemple

Un fichier export exemple avec transfert manuel d'images (crédit Kozlika).

Gros import 1

Un gros import en 9 minutes pour un fichier blog-backup.txt de 2 393 kB file (fait avec Wamp5 en local avec @ini_set('max_execution_time', 600); and $table_recover_count = 10;). Une passe, pas de reprise.

Import from Dotclear version: 1.2.5 - import format: 1.2
Import of categorie : 12
Import of link : 26
Import of post : 627
Import of comment : 934
End of import. Read carefully the following page. Hit the finish button

WordPress 2.0.5 — 518.18 secondes

Ce gros import a été aussi fait avec un serveur Free.fr server avec un temps d'exécution maximum de 30 secondes. Ces 30 seconds permettent l'importation d'environ 60 billets à la fois. L'importation complète a demandé 10 reprises manuelles. Environ 10 minutes au total.

Gros import 2

Un autre gros import fait en local: 16 minutes au total.

WAMP5: installation de WordPress 2.1 fr + kses.php + UTWV
activation de UTW
téléchargement vers /wp-content/uploads ; copie du fichier default-backup.txt 10 255 KB comme uploads/blog-backup.txt
noter qu'il n'y a ni catégories ni utilisateurs dans ce fichier

copie de flatimport # import dotclear 1.2.x or dotclear 2.0-beta into wordpress 2.1 - 19:15 19/02/2007 dans wp-admin/import avec @ini_set('max_execution_time', 1200);

Import from Dotclear version: 2.0-beta5.4 - import format: 2.0

Import of link : 15
Warning: No categories found. All posts associated to catégorie ID 1
Warning: No users found. All posts associated to admin
Import of post : 2163
No import for table post_media
No import for table ping
Import of comment : 6590
UltimateTagWarriorCore class found. Importing tags.
Import of meta : 3039
Associate links to categories.
End of import.
2.1 — 925.05 secondes

Les tags sont importés, la video YouTube video est affichée.

PHPMyAdmin:
2143 posts
6590 comments

Liens

Utilisateurs [en]

Utilisateurs français [fr]

Migration : ils sont passés de Dotclear à WordPress.

Migration : ils sont passés, ou non, de Dotclear à WordPress (à partir de la liste reprise de Guillaume Bizet).

Les recherches sur le Web [fr]

Les requêtes de Guillaume :

On ajoute la requête import :