Migration : passer de pluxml a wordpress
Petite MAJ
Pour des raisons de praticité et de performances, j’ai décidé de le passer ce blog sous WordPress (auparavant sous pluXML 5.3.1).
C’est pourquoi le design a un peu changé.
J’en ai profité pour récupérer les commentaires des articles, étant donné qu’il y en avait des centaines.
Destiné aux développeurs novices intéressés, voici le script utilisé :
<?php
$user = "";
$pass = "";
$hostname = "";
$dbname = "";
$host = "mysql:host=$hostname;dbname=$dbname;charset=utf8";
$db = new PDO ($host,$user,$pass);
$date = new DateTime();
foreach (glob('0011*.xml') as $filename){
$dom = new DomDocument();
$dom->load($filename);
$date->setTimestamp(explode('-',explode('.',$filename)[1])[0]);
$msg = [ 'author' => $dom->getElementsByTagName('author')->item(0)->nodeValue,
'ip' => $dom->getElementsByTagName('ip')->item(0)->nodeValue,
'mail' => $dom->getElementsByTagName('mail')->item(0)->nodeValue,
'content' => $dom->getElementsByTagName('content')->item(0)->nodeValue,
'date' => $date->format('Y-m-d H:i:s')];
$sql = "INSERT INTO wp_comments(comment_post_ID,comment_author,comment_author_email,comment_author_IP,comment_date,comment_date_gmt,comment_content,comment_approved) values(:comment_post_ID,:comment_author,:comment_author_email,:comment_author_IP,:comment_date,:comment_date_gmt,:comment_content,:comment_approved)";
$st = $db->prepare($sql);
$st->execute([
':comment_approved' => 1,
':comment_post_ID' => 42,
':comment_author' => $msg['author'],
':comment_author_email' => $msg['mail'],
':comment_content' => $msg['content'],
':comment_author_IP' => $msg['ip'],
':comment_date' => $msg['date'],
':comment_date_gmt' => $msg['date']
]);
}
?>
- Vous devez remplacer $user, $pass, $hostname, $dbname par vos propres identifiants.
- Le 0011 doit être remplacé par l’ID de l’article sous pluXML.
- Le 42 doit être remplacé par l’ID de l’article sous WordPress.
- Ce script « index.php » est à uploader dans le dossier « /data/commentaires/ ».
- N’oubliez pas de renommer temporairement le .htaccess pour pouvoir y accéder via l’adresse nomdedomaine/data/commentaires.
- Ne l’exécutez qu’une seule fois par article.
Si vous voulez récupérer les commentaires de tous vos articles, voici des suggestions d’améliorations :
- Établir un tableau de correspondance [ID_article_pluXML => ID_article_Wordpress]
- Boucler sur ce tableau et se servir du script ci-dessus.
- Mettre à jour le nb de commentaires de l’article wordpress (ce n’est pas fait automatiquement) .. Pour cela il faut modifier la colonne comment_count de la table wp_posts