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.
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 !
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.
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.
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.
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 !
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…
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.
@ini_set('max_execution_time', 600);
ouvrir le fichier blog-backup.txt avec un éditeur compatible UTF-8 (Notepad++, Notepad2 …),
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)
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.
Si vous avez des problèmes avec des caractères accentués, ou autres, vérifier que :
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 …
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.
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.
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.
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).
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 export exemple avec transfert manuel d'images (crédit Kozlika).
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.
Un autre gros import fait en local: 16 minutes au total.
WAMP5: installation de WordPress 2.1 fr + kses.php + UTWVImport 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
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 requêtes de Guillaume :
On ajoute la requête import :