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
John Doe avatar
About John Doe
John Doe's true identity is unknown. Maybe he is a successful blogger or writer. Nobody knows it.
comments powered by Disqus